From: Paul Gevers Date: Sat, 15 Nov 2025 07:44:39 +0000 (+0100) Subject: Import siridb-server_2.0.53.orig.tar.gz X-Git-Tag: archive/raspbian/2.0.53-2+rpi1^2^2^2~2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=70370fa2da74251516f63d1ccc5a22ec26136a0e;p=siridb-server.git Import siridb-server_2.0.53.orig.tar.gz [dgit import orig siridb-server_2.0.53.orig.tar.gz] --- 70370fa2da74251516f63d1ccc5a22ec26136a0e diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..45180862 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: cesbit diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..9daf0b0f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,30 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Create a database with the following configuration '...' +2. Do the following action '....' +3. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Machine/OS (please complete the following information):** + - OS: [e.g. Debian] + - Version [e.g. Buster, AMD64] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..11fc491e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..88600d69 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,32 @@ +name: CI +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - name: Install libcleri + run: | + git clone https://github.com/cesbit/libcleri.git + cd ./libcleri/Release/ + make + sudo make install + - name: Install dependencies + run: | + sudo apt-get update -y + sudo apt-get install -y uuid-dev libuv1-dev libpcre2-dev libyajl-dev valgrind + - name: Run tests + run: | + cd ./Release/ + make test + - name: Compile code + run: | + cd ./Release/ + CFLAGS="-Werror -Winline -std=gnu89" make diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..79117755 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,47 @@ +name: Deploy + +on: + push: + tags: + - "*" + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Log in to the Container registry + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: ${{ env.REGISTRY }}/siridb/siridb-server + + - name: Get the version + id: get_version + run: echo ::set-output name=VERSION::$(echo $GITHUB_REF | cut -d / -f 3) + + - name: Build and push Docker image + uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc + with: + context: . + push: true + file: docker/Dockerfile + tags: ghcr.io/siridb/siridb-server:${{ steps.get_version.outputs.VERSION }},ghcr.io/siridb/siridb-server:latest + labels: ${{ steps.meta.outputs.labels }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..0271f8e1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,86 @@ +# Object files +*.o +*.ko +*.obj +*.elf + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex +*.out + +# Debug files +*.dSYM/ + +/Debug/siridb-server +/Release/siridb-server +*.d +*.d +/testdir +*.log + +# Eclipse +/.settings +.cproject +.project + +# Code:blocks +bin/ +siridbc.cbp +siridbc.depend +siridbc.layout + +# Python +*/__pycache__/* +*.pyc + +# Build +build/ + +# Grammar +grammar/cgrammar/ +grammar/jsgrammar/ +grammar/pygrammar/ +grammar/gogrammar/ +grammar/javagrammar/ + +# Sublime Text +*.sublime-project +*.sublime-workspace + +# VS Code +.vscode/ + +# Test +itest/testdir +test/testdir + +# Debian +debian/.debhelper/ +debian/debhelper-build-stamp +debian/files +debian/siridb-server.postrm.debhelper +debian/siridb-server.substvars +debian/siridb-server/ +Release/siridb-server.1 + diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..ffc2bab6 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +info@siridb.net. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/Debug/help b/Debug/help new file mode 120000 index 00000000..76c213ed --- /dev/null +++ b/Debug/help @@ -0,0 +1 @@ +../help/ \ No newline at end of file diff --git a/Debug/makefile b/Debug/makefile new file mode 100644 index 00000000..0a89e84e --- /dev/null +++ b/Debug/makefile @@ -0,0 +1,86 @@ +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include src/base64/subdir.mk +-include src/xpath/subdir.mk +-include src/xmath/subdir.mk +-include src/timeit/subdir.mk +-include src/xstr/subdir.mk +-include src/vec/subdir.mk +-include src/siri/service/subdir.mk +-include src/siri/parser/subdir.mk +-include src/siri/net/subdir.mk +-include src/siri/help/subdir.mk +-include src/siri/grammar/subdir.mk +-include src/siri/file/subdir.mk +-include src/siri/db/subdir.mk +-include src/siri/cfg/subdir.mk +-include src/siri/args/subdir.mk +-include src/siri/subdir.mk +-include src/qpack/subdir.mk +-include src/qpjson/subdir.mk +-include src/procinfo/subdir.mk +-include src/owcrypt/subdir.mk +-include src/motd/subdir.mk +-include src/logger/subdir.mk +-include src/lock/subdir.mk +-include src/llist/subdir.mk +-include src/iso8601/subdir.mk +-include src/lib/subdir.mk +-include src/imap/subdir.mk +-include src/omap/subdir.mk +-include src/expr/subdir.mk +-include src/ctree/subdir.mk +-include src/cfgparser/subdir.mk +-include src/cexpr/subdir.mk +-include src/argparse/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +OS := $(shell uname) +ifeq ($(OS),Darwin) +CRYPT := +UUID := +INSTALL_PATH := /usr/local +else +CRYPT := -lcrypt +UUID := -luuid +INSTALL_PATH := /usr +endif + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: siridb-server + +# Tool invocations +siridb-server: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + gcc -o "siridb-server" $(OBJS) $(USER_OBJS) $(LIBS) $(CRYPT) $(UUID) $(LDFLAGS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(EXECUTABLES)$(OBJS)$(C_DEPS) siridb-server + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets + +test: + @cd ../test && ./test.sh diff --git a/Debug/objects.mk b/Debug/objects.mk new file mode 100644 index 00000000..bc2d853e --- /dev/null +++ b/Debug/objects.mk @@ -0,0 +1,4 @@ +USER_OBJS := + +LIBS := -luv -lm -lpcre2-8 -lcleri -lyajl + diff --git a/Debug/sources.mk b/Debug/sources.mk new file mode 100644 index 00000000..02a3425b --- /dev/null +++ b/Debug/sources.mk @@ -0,0 +1,44 @@ +OBJ_SRCS := +ASM_SRCS := +C_SRCS := +O_SRCS := +S_UPPER_SRCS := +EXECUTABLES := +OBJS := +C_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +src/argparse \ +src/base64 \ +src/cexpr \ +src/cfgparser \ +src/ctree \ +src/expr \ +src/imap \ +src/iso8601 \ +src/lib \ +src/llist \ +src/lock \ +src/logger \ +src/omap \ +src/owcrypt \ +src/procinfo \ +src/qpack \ +src/qpjson \ +src/siri/service \ +src/siri/args \ +src/siri \ +src/siri/cfg \ +src/siri/db \ +src/siri/file \ +src/siri/grammar \ +src/siri/help \ +src/siri/net \ +src/vec \ +src/xstr \ +src/timeit \ +src/xmath \ +src/xpath \ + diff --git a/Debug/src/argparse/subdir.mk b/Debug/src/argparse/subdir.mk new file mode 100644 index 00000000..cd76991d --- /dev/null +++ b/Debug/src/argparse/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/argparse/argparse.c + +OBJS += \ +./src/argparse/argparse.o + +C_DEPS += \ +./src/argparse/argparse.d + + +# Each subdirectory must supply rules for building sources it contributes +src/argparse/%.o: ../src/argparse/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/base64/subdir.mk b/Debug/src/base64/subdir.mk new file mode 100644 index 00000000..e9ad5837 --- /dev/null +++ b/Debug/src/base64/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/base64/base64.c + +OBJS += \ +./src/base64/base64.o + +C_DEPS += \ +./src/base64/base64.d + + +# Each subdirectory must supply rules for building sources it contributes +src/base64/%.o: ../src/base64/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/cexpr/subdir.mk b/Debug/src/cexpr/subdir.mk new file mode 100644 index 00000000..a232c5bb --- /dev/null +++ b/Debug/src/cexpr/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/cexpr/cexpr.c + +OBJS += \ +./src/cexpr/cexpr.o + +C_DEPS += \ +./src/cexpr/cexpr.d + + +# Each subdirectory must supply rules for building sources it contributes +src/cexpr/%.o: ../src/cexpr/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/cfgparser/subdir.mk b/Debug/src/cfgparser/subdir.mk new file mode 100644 index 00000000..c878cf51 --- /dev/null +++ b/Debug/src/cfgparser/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/cfgparser/cfgparser.c + +OBJS += \ +./src/cfgparser/cfgparser.o + +C_DEPS += \ +./src/cfgparser/cfgparser.d + + +# Each subdirectory must supply rules for building sources it contributes +src/cfgparser/%.o: ../src/cfgparser/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/ctree/subdir.mk b/Debug/src/ctree/subdir.mk new file mode 100644 index 00000000..f5895bf3 --- /dev/null +++ b/Debug/src/ctree/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/ctree/ctree.c + +OBJS += \ +./src/ctree/ctree.o + +C_DEPS += \ +./src/ctree/ctree.d + + +# Each subdirectory must supply rules for building sources it contributes +src/ctree/%.o: ../src/ctree/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/expr/subdir.mk b/Debug/src/expr/subdir.mk new file mode 100644 index 00000000..a712d3b4 --- /dev/null +++ b/Debug/src/expr/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/expr/expr.c + +OBJS += \ +./src/expr/expr.o + +C_DEPS += \ +./src/expr/expr.d + + +# Each subdirectory must supply rules for building sources it contributes +src/expr/%.o: ../src/expr/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/imap/subdir.mk b/Debug/src/imap/subdir.mk new file mode 100644 index 00000000..3c6e81de --- /dev/null +++ b/Debug/src/imap/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/imap/imap.c + +OBJS += \ +./src/imap/imap.o + +C_DEPS += \ +./src/imap/imap.d + + +# Each subdirectory must supply rules for building sources it contributes +src/imap/%.o: ../src/imap/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/iso8601/subdir.mk b/Debug/src/iso8601/subdir.mk new file mode 100644 index 00000000..821f2c7d --- /dev/null +++ b/Debug/src/iso8601/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/iso8601/iso8601.c + +OBJS += \ +./src/iso8601/iso8601.o + +C_DEPS += \ +./src/iso8601/iso8601.d + + +# Each subdirectory must supply rules for building sources it contributes +src/iso8601/%.o: ../src/iso8601/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/lib/subdir.mk b/Debug/src/lib/subdir.mk new file mode 100644 index 00000000..8fa0e4e3 --- /dev/null +++ b/Debug/src/lib/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/lib/http_parser.c + +OBJS += \ +./src/lib/http_parser.o + +C_DEPS += \ +./src/lib/http_parser.d + + +# Each subdirectory must supply rules for building sources it contributes +src/lib/%.o: ../src/lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/llist/subdir.mk b/Debug/src/llist/subdir.mk new file mode 100644 index 00000000..95b19868 --- /dev/null +++ b/Debug/src/llist/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/llist/llist.c + +OBJS += \ +./src/llist/llist.o + +C_DEPS += \ +./src/llist/llist.d + + +# Each subdirectory must supply rules for building sources it contributes +src/llist/%.o: ../src/llist/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/lock/subdir.mk b/Debug/src/lock/subdir.mk new file mode 100644 index 00000000..61cb641d --- /dev/null +++ b/Debug/src/lock/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/lock/lock.c + +OBJS += \ +./src/lock/lock.o + +C_DEPS += \ +./src/lock/lock.d + + +# Each subdirectory must supply rules for building sources it contributes +src/lock/%.o: ../src/lock/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/logger/subdir.mk b/Debug/src/logger/subdir.mk new file mode 100644 index 00000000..0dbcd074 --- /dev/null +++ b/Debug/src/logger/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/logger/logger.c + +OBJS += \ +./src/logger/logger.o + +C_DEPS += \ +./src/logger/logger.d + + +# Each subdirectory must supply rules for building sources it contributes +src/logger/%.o: ../src/logger/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/omap/subdir.mk b/Debug/src/omap/subdir.mk new file mode 100644 index 00000000..8a60ff02 --- /dev/null +++ b/Debug/src/omap/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/omap/omap.c + +OBJS += \ +./src/omap/omap.o + +C_DEPS += \ +./src/omap/omap.d + + +# Each subdirectory must supply rules for building sources it contributes +src/omap/%.o: ../src/omap/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/owcrypt/subdir.mk b/Debug/src/owcrypt/subdir.mk new file mode 100644 index 00000000..7151e179 --- /dev/null +++ b/Debug/src/owcrypt/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/owcrypt/owcrypt.c + +OBJS += \ +./src/owcrypt/owcrypt.o + +C_DEPS += \ +./src/owcrypt/owcrypt.d + + +# Each subdirectory must supply rules for building sources it contributes +src/owcrypt/%.o: ../src/owcrypt/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/procinfo/subdir.mk b/Debug/src/procinfo/subdir.mk new file mode 100644 index 00000000..fca736a2 --- /dev/null +++ b/Debug/src/procinfo/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/procinfo/procinfo.c + +OBJS += \ +./src/procinfo/procinfo.o + +C_DEPS += \ +./src/procinfo/procinfo.d + + +# Each subdirectory must supply rules for building sources it contributes +src/procinfo/%.o: ../src/procinfo/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/qpack/subdir.mk b/Debug/src/qpack/subdir.mk new file mode 100644 index 00000000..1a89cbc2 --- /dev/null +++ b/Debug/src/qpack/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/qpack/qpack.c + +OBJS += \ +./src/qpack/qpack.o + +C_DEPS += \ +./src/qpack/qpack.d + + +# Each subdirectory must supply rules for building sources it contributes +src/qpack/%.o: ../src/qpack/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/qpjson/subdir.mk b/Debug/src/qpjson/subdir.mk new file mode 100644 index 00000000..5a0007c1 --- /dev/null +++ b/Debug/src/qpjson/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/qpjson/qpjson.c + +OBJS += \ +./src/qpjson/qpjson.o + +C_DEPS += \ +./src/qpjson/qpjson.d + + +# Each subdirectory must supply rules for building sources it contributes +src/qpjson/%.o: ../src/qpjson/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/siri/args/subdir.mk b/Debug/src/siri/args/subdir.mk new file mode 100644 index 00000000..2b4760c8 --- /dev/null +++ b/Debug/src/siri/args/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/args/args.c + +OBJS += \ +./src/siri/args/args.o + +C_DEPS += \ +./src/siri/args/args.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/args/%.o: ../src/siri/args/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/siri/cfg/subdir.mk b/Debug/src/siri/cfg/subdir.mk new file mode 100644 index 00000000..a51eb753 --- /dev/null +++ b/Debug/src/siri/cfg/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/cfg/cfg.c + +OBJS += \ +./src/siri/cfg/cfg.o + +C_DEPS += \ +./src/siri/cfg/cfg.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/cfg/%.o: ../src/siri/cfg/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/siri/db/subdir.mk b/Debug/src/siri/db/subdir.mk new file mode 100644 index 00000000..f189bf83 --- /dev/null +++ b/Debug/src/siri/db/subdir.mk @@ -0,0 +1,146 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/db/access.c \ +../src/siri/db/aggregate.c \ +../src/siri/db/auth.c \ +../src/siri/db/buffer.c \ +../src/siri/db/db.c \ +../src/siri/db/ffile.c \ +../src/siri/db/fifo.c \ +../src/siri/db/forward.c \ +../src/siri/db/group.c \ +../src/siri/db/groups.c \ +../src/siri/db/initsync.c \ +../src/siri/db/insert.c \ +../src/siri/db/listener.c \ +../src/siri/db/lookup.c \ +../src/siri/db/median.c \ +../src/siri/db/misc.c \ +../src/siri/db/nodes.c \ +../src/siri/db/pcache.c \ +../src/siri/db/points.c \ +../src/siri/db/pool.c \ +../src/siri/db/pools.c \ +../src/siri/db/presuf.c \ +../src/siri/db/props.c \ +../src/siri/db/queries.c \ +../src/siri/db/query.c \ +../src/siri/db/re.c \ +../src/siri/db/reindex.c \ +../src/siri/db/replicate.c \ +../src/siri/db/series.c \ +../src/siri/db/server.c \ +../src/siri/db/servers.c \ +../src/siri/db/shard.c \ +../src/siri/db/shards.c \ +../src/siri/db/sset.c \ +../src/siri/db/tag.c \ +../src/siri/db/tags.c \ +../src/siri/db/tasks.c \ +../src/siri/db/tee.c \ +../src/siri/db/time.c \ +../src/siri/db/user.c \ +../src/siri/db/users.c \ +../src/siri/db/variance.c \ +../src/siri/db/walker.c + +OBJS += \ +./src/siri/db/access.o \ +./src/siri/db/aggregate.o \ +./src/siri/db/auth.o \ +./src/siri/db/buffer.o \ +./src/siri/db/db.o \ +./src/siri/db/ffile.o \ +./src/siri/db/fifo.o \ +./src/siri/db/forward.o \ +./src/siri/db/group.o \ +./src/siri/db/groups.o \ +./src/siri/db/initsync.o \ +./src/siri/db/insert.o \ +./src/siri/db/listener.o \ +./src/siri/db/lookup.o \ +./src/siri/db/median.o \ +./src/siri/db/misc.o \ +./src/siri/db/nodes.o \ +./src/siri/db/pcache.o \ +./src/siri/db/points.o \ +./src/siri/db/pool.o \ +./src/siri/db/pools.o \ +./src/siri/db/presuf.o \ +./src/siri/db/props.o \ +./src/siri/db/queries.o \ +./src/siri/db/query.o \ +./src/siri/db/re.o \ +./src/siri/db/reindex.o \ +./src/siri/db/replicate.o \ +./src/siri/db/series.o \ +./src/siri/db/server.o \ +./src/siri/db/servers.o \ +./src/siri/db/shard.o \ +./src/siri/db/shards.o \ +./src/siri/db/sset.o \ +./src/siri/db/tag.o \ +./src/siri/db/tags.o \ +./src/siri/db/tasks.o \ +./src/siri/db/tee.o \ +./src/siri/db/time.o \ +./src/siri/db/user.o \ +./src/siri/db/users.o \ +./src/siri/db/variance.o \ +./src/siri/db/walker.o + +C_DEPS += \ +./src/siri/db/access.d \ +./src/siri/db/aggregate.d \ +./src/siri/db/auth.d \ +./src/siri/db/buffer.d \ +./src/siri/db/db.d \ +./src/siri/db/ffile.d \ +./src/siri/db/fifo.d \ +./src/siri/db/forward.d \ +./src/siri/db/group.d \ +./src/siri/db/groups.d \ +./src/siri/db/initsync.d \ +./src/siri/db/insert.d \ +./src/siri/db/listener.d \ +./src/siri/db/lookup.d \ +./src/siri/db/median.d \ +./src/siri/db/misc.d \ +./src/siri/db/nodes.d \ +./src/siri/db/pcache.d \ +./src/siri/db/points.d \ +./src/siri/db/pool.d \ +./src/siri/db/pools.d \ +./src/siri/db/presuf.d \ +./src/siri/db/props.d \ +./src/siri/db/queries.d \ +./src/siri/db/query.d \ +./src/siri/db/re.d \ +./src/siri/db/reindex.d \ +./src/siri/db/replicate.d \ +./src/siri/db/series.d \ +./src/siri/db/server.d \ +./src/siri/db/servers.d \ +./src/siri/db/shard.d \ +./src/siri/db/shards.d \ +./src/siri/db/sset.d \ +./src/siri/db/tag.d \ +./src/siri/db/tags.d \ +./src/siri/db/tasks.d \ +./src/siri/db/tee.d \ +./src/siri/db/time.d \ +./src/siri/db/user.d \ +./src/siri/db/users.d \ +./src/siri/db/variance.d \ +./src/siri/db/walker.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/db/%.o: ../src/siri/db/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/siri/file/subdir.mk b/Debug/src/siri/file/subdir.mk new file mode 100644 index 00000000..67cc482d --- /dev/null +++ b/Debug/src/siri/file/subdir.mk @@ -0,0 +1,23 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/file/handler.c \ +../src/siri/file/pointer.c + +OBJS += \ +./src/siri/file/handler.o \ +./src/siri/file/pointer.o + +C_DEPS += \ +./src/siri/file/handler.d \ +./src/siri/file/pointer.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/file/%.o: ../src/siri/file/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/siri/grammar/subdir.mk b/Debug/src/siri/grammar/subdir.mk new file mode 100644 index 00000000..b644e6e4 --- /dev/null +++ b/Debug/src/siri/grammar/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/grammar/grammar.c + +OBJS += \ +./src/siri/grammar/grammar.o + +C_DEPS += \ +./src/siri/grammar/grammar.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/grammar/%.o: ../src/siri/grammar/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/siri/help/subdir.mk b/Debug/src/siri/help/subdir.mk new file mode 100644 index 00000000..4eef732c --- /dev/null +++ b/Debug/src/siri/help/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/help/help.c + +OBJS += \ +./src/siri/help/help.o + +C_DEPS += \ +./src/siri/help/help.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/help/%.o: ../src/siri/help/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/siri/net/subdir.mk b/Debug/src/siri/net/subdir.mk new file mode 100644 index 00000000..3bbd7b7e --- /dev/null +++ b/Debug/src/siri/net/subdir.mk @@ -0,0 +1,42 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/net/bserver.c \ +../src/siri/net/clserver.c \ +../src/siri/net/pkg.c \ +../src/siri/net/promise.c \ +../src/siri/net/promises.c \ +../src/siri/net/protocol.c \ +../src/siri/net/stream.c \ +../src/siri/net/tcp.c \ +../src/siri/net/pipe.c + +OBJS += \ +./src/siri/net/bserver.o \ +./src/siri/net/clserver.o \ +./src/siri/net/pkg.o \ +./src/siri/net/promise.o \ +./src/siri/net/promises.o \ +./src/siri/net/protocol.o \ +./src/siri/net/stream.o \ +./src/siri/net/tcp.o \ +./src/siri/net/pipe.o + +C_DEPS += \ +./src/siri/net/bserver.d \ +./src/siri/net/clserver.d \ +./src/siri/net/pkg.d \ +./src/siri/net/promise.d \ +./src/siri/net/promises.d \ +./src/siri/net/protocol.d \ +./src/siri/net/stream.d \ +./src/siri/net/tcp.d \ +./src/siri/net/pipe.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/net/%.o: ../src/siri/net/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' diff --git a/Debug/src/siri/service/subdir.mk b/Debug/src/siri/service/subdir.mk new file mode 100644 index 00000000..6557af1d --- /dev/null +++ b/Debug/src/siri/service/subdir.mk @@ -0,0 +1,26 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/service/account.c \ +../src/siri/service/client.c \ +../src/siri/service/request.c + +OBJS += \ +./src/siri/service/account.o \ +./src/siri/service/client.o \ +./src/siri/service/request.o + +C_DEPS += \ +./src/siri/service/account.d \ +./src/siri/service/client.d \ +./src/siri/service/request.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/service/%.o: ../src/siri/service/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/siri/subdir.mk b/Debug/src/siri/subdir.mk new file mode 100644 index 00000000..bcbba499 --- /dev/null +++ b/Debug/src/siri/subdir.mk @@ -0,0 +1,50 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/api.c \ +../src/siri/async.c \ +../src/siri/backup.c \ +../src/siri/buffersync.c \ +../src/siri/err.c \ +../src/siri/evars.c \ +../src/siri/health.c \ +../src/siri/heartbeat.c \ +../src/siri/optimize.c \ +../src/siri/siri.c \ +../src/siri/version.c + +OBJS += \ +./src/siri/api.o \ +./src/siri/async.o \ +./src/siri/backup.o \ +./src/siri/buffersync.o \ +./src/siri/err.o \ +./src/siri/evars.o \ +./src/siri/health.o \ +./src/siri/heartbeat.o \ +./src/siri/optimize.o \ +./src/siri/siri.o \ +./src/siri/version.o + +C_DEPS += \ +./src/siri/api.d \ +./src/siri/async.d \ +./src/siri/backup.d \ +./src/siri/buffersync.d \ +./src/siri/err.d \ +./src/siri/evars.d \ +./src/siri/health.d \ +./src/siri/heartbeat.d \ +./src/siri/optimize.d \ +./src/siri/siri.d \ +./src/siri/version.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/%.o: ../src/siri/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/timeit/subdir.mk b/Debug/src/timeit/subdir.mk new file mode 100644 index 00000000..46946044 --- /dev/null +++ b/Debug/src/timeit/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/timeit/timeit.c + +OBJS += \ +./src/timeit/timeit.o + +C_DEPS += \ +./src/timeit/timeit.d + + +# Each subdirectory must supply rules for building sources it contributes +src/timeit/%.o: ../src/timeit/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/vec/subdir.mk b/Debug/src/vec/subdir.mk new file mode 100644 index 00000000..92d4fcef --- /dev/null +++ b/Debug/src/vec/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/vec/vec.c + +OBJS += \ +./src/vec/vec.o + +C_DEPS += \ +./src/vec/vec.d + + +# Each subdirectory must supply rules for building sources it contributes +src/vec/%.o: ../src/vec/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/xmath/subdir.mk b/Debug/src/xmath/subdir.mk new file mode 100644 index 00000000..acaa0e44 --- /dev/null +++ b/Debug/src/xmath/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/xmath/xmath.c + +OBJS += \ +./src/xmath/xmath.o + +C_DEPS += \ +./src/xmath/xmath.d + + +# Each subdirectory must supply rules for building sources it contributes +src/xmath/%.o: ../src/xmath/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/xpath/subdir.mk b/Debug/src/xpath/subdir.mk new file mode 100644 index 00000000..d626daf3 --- /dev/null +++ b/Debug/src/xpath/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/xpath/xpath.c + +OBJS += \ +./src/xpath/xpath.o + +C_DEPS += \ +./src/xpath/xpath.d + + +# Each subdirectory must supply rules for building sources it contributes +src/xpath/%.o: ../src/xpath/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/src/xstr/subdir.mk b/Debug/src/xstr/subdir.mk new file mode 100644 index 00000000..43b94872 --- /dev/null +++ b/Debug/src/xstr/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/xstr/xstr.c + +OBJS += \ +./src/xstr/xstr.o + +C_DEPS += \ +./src/xstr/xstr.d + + +# Each subdirectory must supply rules for building sources it contributes +src/xstr/%.o: ../src/xstr/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Debug/subdir.mk b/Debug/subdir.mk new file mode 100644 index 00000000..381d7cba --- /dev/null +++ b/Debug/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../main.c + +OBJS += \ +./main.o + +C_DEPS += \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + gcc -I../include -O0 -g3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..7123e043 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Cesbit + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..3200f15a --- /dev/null +++ b/README.md @@ -0,0 +1,174 @@ +[![CI](https://github.com/SiriDB/siridb-server/workflows/CI/badge.svg)](https://github.com/SiriDB/siridb-server/actions) +[![Release Version](https://img.shields.io/github/release/SiriDB/siridb-server)](https://github.com/SiriDB/siridb-server/releases) + +SiriDB Server +============= +SiriDB is a highly-scalable, robust and super fast time series database. + +--------------------------------------- + * [Installation](#installation) + * [Ubuntu](#ubuntu) + * [Compile from source](#compile-from-source) + * [Linux](#linux) + * [OSX](#osx) + * [Docker](#docker) + * [Configuration](#configuration) + * [Build Debian package](#build-debian-package) + * [Run integration tests](#run-integration-tests) + * [Create or expand a database](#create-or-expand-a-database) + * [Using SiriDB](#using-siridb) + * [SiriDB Connectors](#siridb-connectors) + * [SiriDB HTTP](#siridb-http) + * [SiriDB Prompt](#siridb-prompt) + * [Grafana](#grafana) + * [API/Query language](#query-language) + +--------------------------------------- + +## Installation +### Ubuntu +For Ubuntu we have a deb package available which can be downloaded [here](https://github.com/SiriDB/siridb-server/releases/latest). + +Note: SiriDB requires *libexpat1*, *libuv1*, *libpcre2-8-0* and *libcleri0* these libraries can be easily installed using apt: +``` +apt install libexpat1 libuv1 libpcre2-8-0 libcleri0 +``` + +>Library `libcleri0` is available from Ubuntu 18.04, for older versions a deb package can be found here: +>https://github.com/cesbit/libcleri/releases/latest + +The .deb package installs a configuration file at `/etc/siridb/siridb.conf`. You might want to view or change this file before starting SiriDB. + +### Compile from source +>From version 2.0.19 libcleri is not included as part of this source anymore +>and needs to be installed separately. libcleri can be found here: +>[https://github.com/cesbit/libcleri](https://github.com/cesbit/libcleri) +>or can be installed using `apt`. + +#### Linux +Install the following requirements: (Ubuntu 18.04) +``` +sudo apt install libcleri-dev +sudo apt install libpcre2-dev +sudo apt install libuv1-dev +sudo apt install libyajl-dev +sudo apt install uuid-dev +``` + +Compile (replace Release with Debug for a debug build): +``` +cd ./Release +make clean +make test +make +``` + +Install +``` +sudo make install +``` + +#### OSX +>Make sure [libcleri](https://github.com/cesbit/libcleri) is installed! + +Install the following requirements: +``` +brew install pcre2 +brew install libuv +brew install yajl +brew install ossp-uuid +``` +Compile (replace Release with Debug for a debug build): +``` +cd ./Release +export CFLAGS="-I/usr/local/include" +export LDFLAGS="-L/usr/local/lib" +make clean +make test +make +``` + +Install +``` +sudo make install +``` + +#### Docker + +```bash +docker run \ + -d \ + -p 9000:9000 \ + -p 9080:9080 \ + -p 8080:8080 \ + -v ~/siridb-data:/var/lib/siridb \ + ghcr.io/siridb/siridb-server:latest +``` + +#### Configuration +SiriDB accepts a configuration file or environment variable as configuration. By default SiriDB will search for the configuration file in `/etc/siridb/siridb.conf` but alternatively you can specify a custom path by using the `-c/--config` argument or use environment variable. + +An example configuration file can be found here: +[https://github.com/SiriDB/siridb-server/blob/master/siridb.conf](https://github.com/SiriDB/siridb-server/blob/master/siridb.conf) + +### Build Debian package: + +Install required packages (*autopkgtest is required for running the tests*) +``` +apt-get install devscripts lintian help2man autopkgtest +``` + +Create archive +``` +git archive -o ../siridb-server_2.0.31.orig.tar.gz master +``` + +Run tests +``` +autopkgtest -B -- null +``` + +Build package +``` +debuild -us -uc +``` + +## Run integration tests +The simplest way to run the integration tests is to use [docker](https://docs.docker.com/install/). + +Build integration test image +``` +docker build -t siridb/itest -f itest/Dockerfile . +``` + +Run integration tests +``` +docker run siridb/itest:latest +``` + +## Create or expand a database +[SiriDB Admin](https://github.com/SiriDB/siridb-admin) can be used for creating a new database or expanding an existing database with a new server. Documentation on how to install and use the admin tool can be found at the [siridb-admin](https://github.com/SiriDB/siridb-admin#readme) github project. Binaries are available for most platforms and can be downloaded from [here](https://github.com/SiriDB/siridb-admin/releases/latest). As an alternative it is possible to use a simple [HTTP API](https://docs.siridb.net/connect/http_api/) for creating or expanding a SiriDB database. + +## Using SiriDB +SiriDB has several tools available to connect to a SiriDB database. + +### SiriDB Connectors +The following native connectors are available: + - [C/C++](https://github.com/SiriDB/libsiridb#readme) + - [Python](https://github.com/SiriDB/siridb-connector#readme) + - [Go](https://github.com/SiriDB/go-siridb-connector#readme) + - [Node.js](https://github.com/SiriDB/siridb-nodejs-addon#readme) + +When not using one of the above, you can still communicate to SiriDB using [SiriDB HTTP](#siridb-http). + +### SiriDB HTTP +[SiriDB HTTP](https://github.com/SiriDB/siridb-http#readme) provides a HTTP API for SiriDB and has support for JSON, MsgPack, Qpack, CSV and Socket.io. SiriDB HTTP also has an optional web interface and SSL support. + +### SiriDB Prompt +[SiriDB Prompt](https://github.com/SiriDB/siridb-prompt#readme) can be used as a command line SiriDB client with auto-completion support and can be used to load json or csv data into a SiriDB database. Click [here](https://github.com/SiriDB/siridb-prompt/blob/master/README.md) for more information about SiriDB Prompt. + +### Grafana +[SiriDB Grafana Datasource](https://github.com/SiriDB/grafana-siridb-http-datasource#readme) is a plugin for Grafana. See the following blog article on how to configure and use this plugin: https://github.com/SiriDB/grafana-siridb-http-example. + +## Query language +Documentation about the query language can be found at https://siridb.net/documentation. diff --git a/Release/help b/Release/help new file mode 120000 index 00000000..76c213ed --- /dev/null +++ b/Release/help @@ -0,0 +1 @@ +../help/ \ No newline at end of file diff --git a/Release/makefile b/Release/makefile new file mode 100644 index 00000000..3600bbc8 --- /dev/null +++ b/Release/makefile @@ -0,0 +1,86 @@ +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include src/base64/subdir.mk +-include src/xpath/subdir.mk +-include src/xmath/subdir.mk +-include src/timeit/subdir.mk +-include src/xstr/subdir.mk +-include src/vec/subdir.mk +-include src/siri/service/subdir.mk +-include src/siri/parser/subdir.mk +-include src/siri/net/subdir.mk +-include src/siri/help/subdir.mk +-include src/siri/grammar/subdir.mk +-include src/siri/file/subdir.mk +-include src/siri/db/subdir.mk +-include src/siri/cfg/subdir.mk +-include src/siri/args/subdir.mk +-include src/siri/subdir.mk +-include src/qpack/subdir.mk +-include src/qpjson/subdir.mk +-include src/procinfo/subdir.mk +-include src/owcrypt/subdir.mk +-include src/motd/subdir.mk +-include src/logger/subdir.mk +-include src/lock/subdir.mk +-include src/llist/subdir.mk +-include src/iso8601/subdir.mk +-include src/lib/subdir.mk +-include src/imap/subdir.mk +-include src/omap/subdir.mk +-include src/expr/subdir.mk +-include src/ctree/subdir.mk +-include src/cfgparser/subdir.mk +-include src/cexpr/subdir.mk +-include src/argparse/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +OS := $(shell uname) +ifeq ($(OS),Darwin) +CRYPT := +UUID := +INSTALL_PATH := /usr/local +else +CRYPT := -lcrypt +UUID := -luuid +INSTALL_PATH := /usr +endif + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: siridb-server + +# Tool invocations +siridb-server: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: GCC C Linker' + $(CC) -o "siridb-server" $(OBJS) $(USER_OBJS) $(LDFLAGS) $(LIBS) $(CRYPT) $(UUID) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(EXECUTABLES)$(OBJS)$(C_DEPS) siridb-server + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets + +test: + @cd ../test && ./test.sh diff --git a/Release/objects.mk b/Release/objects.mk new file mode 100644 index 00000000..bc2d853e --- /dev/null +++ b/Release/objects.mk @@ -0,0 +1,4 @@ +USER_OBJS := + +LIBS := -luv -lm -lpcre2-8 -lcleri -lyajl + diff --git a/Release/sources.mk b/Release/sources.mk new file mode 100644 index 00000000..02a3425b --- /dev/null +++ b/Release/sources.mk @@ -0,0 +1,44 @@ +OBJ_SRCS := +ASM_SRCS := +C_SRCS := +O_SRCS := +S_UPPER_SRCS := +EXECUTABLES := +OBJS := +C_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +src/argparse \ +src/base64 \ +src/cexpr \ +src/cfgparser \ +src/ctree \ +src/expr \ +src/imap \ +src/iso8601 \ +src/lib \ +src/llist \ +src/lock \ +src/logger \ +src/omap \ +src/owcrypt \ +src/procinfo \ +src/qpack \ +src/qpjson \ +src/siri/service \ +src/siri/args \ +src/siri \ +src/siri/cfg \ +src/siri/db \ +src/siri/file \ +src/siri/grammar \ +src/siri/help \ +src/siri/net \ +src/vec \ +src/xstr \ +src/timeit \ +src/xmath \ +src/xpath \ + diff --git a/Release/src/argparse/subdir.mk b/Release/src/argparse/subdir.mk new file mode 100644 index 00000000..54e27f54 --- /dev/null +++ b/Release/src/argparse/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/argparse/argparse.c + +OBJS += \ +./src/argparse/argparse.o + +C_DEPS += \ +./src/argparse/argparse.d + + +# Each subdirectory must supply rules for building sources it contributes +src/argparse/%.o: ../src/argparse/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/base64/subdir.mk b/Release/src/base64/subdir.mk new file mode 100644 index 00000000..d4373c5d --- /dev/null +++ b/Release/src/base64/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/base64/base64.c + +OBJS += \ +./src/base64/base64.o + +C_DEPS += \ +./src/base64/base64.d + + +# Each subdirectory must supply rules for building sources it contributes +src/base64/%.o: ../src/base64/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/cexpr/subdir.mk b/Release/src/cexpr/subdir.mk new file mode 100644 index 00000000..cc4f0689 --- /dev/null +++ b/Release/src/cexpr/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/cexpr/cexpr.c + +OBJS += \ +./src/cexpr/cexpr.o + +C_DEPS += \ +./src/cexpr/cexpr.d + + +# Each subdirectory must supply rules for building sources it contributes +src/cexpr/%.o: ../src/cexpr/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/cfgparser/subdir.mk b/Release/src/cfgparser/subdir.mk new file mode 100644 index 00000000..417dbad7 --- /dev/null +++ b/Release/src/cfgparser/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/cfgparser/cfgparser.c + +OBJS += \ +./src/cfgparser/cfgparser.o + +C_DEPS += \ +./src/cfgparser/cfgparser.d + + +# Each subdirectory must supply rules for building sources it contributes +src/cfgparser/%.o: ../src/cfgparser/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/ctree/subdir.mk b/Release/src/ctree/subdir.mk new file mode 100644 index 00000000..c5814dc9 --- /dev/null +++ b/Release/src/ctree/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/ctree/ctree.c + +OBJS += \ +./src/ctree/ctree.o + +C_DEPS += \ +./src/ctree/ctree.d + + +# Each subdirectory must supply rules for building sources it contributes +src/ctree/%.o: ../src/ctree/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/expr/subdir.mk b/Release/src/expr/subdir.mk new file mode 100644 index 00000000..f4789cf4 --- /dev/null +++ b/Release/src/expr/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/expr/expr.c + +OBJS += \ +./src/expr/expr.o + +C_DEPS += \ +./src/expr/expr.d + + +# Each subdirectory must supply rules for building sources it contributes +src/expr/%.o: ../src/expr/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/imap/subdir.mk b/Release/src/imap/subdir.mk new file mode 100644 index 00000000..c19c81ce --- /dev/null +++ b/Release/src/imap/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/imap/imap.c + +OBJS += \ +./src/imap/imap.o + +C_DEPS += \ +./src/imap/imap.d + + +# Each subdirectory must supply rules for building sources it contributes +src/imap/%.o: ../src/imap/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/iso8601/subdir.mk b/Release/src/iso8601/subdir.mk new file mode 100644 index 00000000..f4a095bb --- /dev/null +++ b/Release/src/iso8601/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/iso8601/iso8601.c + +OBJS += \ +./src/iso8601/iso8601.o + +C_DEPS += \ +./src/iso8601/iso8601.d + + +# Each subdirectory must supply rules for building sources it contributes +src/iso8601/%.o: ../src/iso8601/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/lib/subdir.mk b/Release/src/lib/subdir.mk new file mode 100644 index 00000000..d7708c5a --- /dev/null +++ b/Release/src/lib/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/lib/http_parser.c + +OBJS += \ +./src/lib/http_parser.o + +C_DEPS += \ +./src/lib/http_parser.d + + +# Each subdirectory must supply rules for building sources it contributes +src/lib/%.o: ../src/lib/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/llist/subdir.mk b/Release/src/llist/subdir.mk new file mode 100644 index 00000000..67db984f --- /dev/null +++ b/Release/src/llist/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/llist/llist.c + +OBJS += \ +./src/llist/llist.o + +C_DEPS += \ +./src/llist/llist.d + + +# Each subdirectory must supply rules for building sources it contributes +src/llist/%.o: ../src/llist/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/lock/subdir.mk b/Release/src/lock/subdir.mk new file mode 100644 index 00000000..13f395ad --- /dev/null +++ b/Release/src/lock/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/lock/lock.c + +OBJS += \ +./src/lock/lock.o + +C_DEPS += \ +./src/lock/lock.d + + +# Each subdirectory must supply rules for building sources it contributes +src/lock/%.o: ../src/lock/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/logger/subdir.mk b/Release/src/logger/subdir.mk new file mode 100644 index 00000000..676db8a3 --- /dev/null +++ b/Release/src/logger/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/logger/logger.c + +OBJS += \ +./src/logger/logger.o + +C_DEPS += \ +./src/logger/logger.d + + +# Each subdirectory must supply rules for building sources it contributes +src/logger/%.o: ../src/logger/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/omap/subdir.mk b/Release/src/omap/subdir.mk new file mode 100644 index 00000000..f17bc03e --- /dev/null +++ b/Release/src/omap/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/omap/omap.c + +OBJS += \ +./src/omap/omap.o + +C_DEPS += \ +./src/omap/omap.d + + +# Each subdirectory must supply rules for building sources it contributes +src/omap/%.o: ../src/omap/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/owcrypt/subdir.mk b/Release/src/owcrypt/subdir.mk new file mode 100644 index 00000000..60220f5d --- /dev/null +++ b/Release/src/owcrypt/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/owcrypt/owcrypt.c + +OBJS += \ +./src/owcrypt/owcrypt.o + +C_DEPS += \ +./src/owcrypt/owcrypt.d + + +# Each subdirectory must supply rules for building sources it contributes +src/owcrypt/%.o: ../src/owcrypt/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/procinfo/subdir.mk b/Release/src/procinfo/subdir.mk new file mode 100644 index 00000000..ab2e2f7b --- /dev/null +++ b/Release/src/procinfo/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/procinfo/procinfo.c + +OBJS += \ +./src/procinfo/procinfo.o + +C_DEPS += \ +./src/procinfo/procinfo.d + + +# Each subdirectory must supply rules for building sources it contributes +src/procinfo/%.o: ../src/procinfo/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/qpack/subdir.mk b/Release/src/qpack/subdir.mk new file mode 100644 index 00000000..89ce709f --- /dev/null +++ b/Release/src/qpack/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/qpack/qpack.c + +OBJS += \ +./src/qpack/qpack.o + +C_DEPS += \ +./src/qpack/qpack.d + + +# Each subdirectory must supply rules for building sources it contributes +src/qpack/%.o: ../src/qpack/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/qpjson/subdir.mk b/Release/src/qpjson/subdir.mk new file mode 100644 index 00000000..2ba87a9c --- /dev/null +++ b/Release/src/qpjson/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/qpjson/qpjson.c + +OBJS += \ +./src/qpjson/qpjson.o + +C_DEPS += \ +./src/qpjson/qpjson.d + + +# Each subdirectory must supply rules for building sources it contributes +src/qpjson/%.o: ../src/qpjson/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/siri/args/subdir.mk b/Release/src/siri/args/subdir.mk new file mode 100644 index 00000000..b61843d8 --- /dev/null +++ b/Release/src/siri/args/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/args/args.c + +OBJS += \ +./src/siri/args/args.o + +C_DEPS += \ +./src/siri/args/args.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/args/%.o: ../src/siri/args/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/siri/cfg/subdir.mk b/Release/src/siri/cfg/subdir.mk new file mode 100644 index 00000000..f1296f3a --- /dev/null +++ b/Release/src/siri/cfg/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/cfg/cfg.c + +OBJS += \ +./src/siri/cfg/cfg.o + +C_DEPS += \ +./src/siri/cfg/cfg.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/cfg/%.o: ../src/siri/cfg/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/siri/db/subdir.mk b/Release/src/siri/db/subdir.mk new file mode 100644 index 00000000..d641e350 --- /dev/null +++ b/Release/src/siri/db/subdir.mk @@ -0,0 +1,146 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/db/access.c \ +../src/siri/db/aggregate.c \ +../src/siri/db/auth.c \ +../src/siri/db/buffer.c \ +../src/siri/db/db.c \ +../src/siri/db/ffile.c \ +../src/siri/db/fifo.c \ +../src/siri/db/forward.c \ +../src/siri/db/group.c \ +../src/siri/db/groups.c \ +../src/siri/db/initsync.c \ +../src/siri/db/insert.c \ +../src/siri/db/listener.c \ +../src/siri/db/lookup.c \ +../src/siri/db/median.c \ +../src/siri/db/misc.c \ +../src/siri/db/nodes.c \ +../src/siri/db/pcache.c \ +../src/siri/db/points.c \ +../src/siri/db/pool.c \ +../src/siri/db/pools.c \ +../src/siri/db/presuf.c \ +../src/siri/db/props.c \ +../src/siri/db/queries.c \ +../src/siri/db/query.c \ +../src/siri/db/re.c \ +../src/siri/db/reindex.c \ +../src/siri/db/replicate.c \ +../src/siri/db/series.c \ +../src/siri/db/server.c \ +../src/siri/db/servers.c \ +../src/siri/db/shard.c \ +../src/siri/db/shards.c \ +../src/siri/db/sset.c \ +../src/siri/db/tag.c \ +../src/siri/db/tags.c \ +../src/siri/db/tasks.c \ +../src/siri/db/tee.c \ +../src/siri/db/time.c \ +../src/siri/db/user.c \ +../src/siri/db/users.c \ +../src/siri/db/variance.c \ +../src/siri/db/walker.c + +OBJS += \ +./src/siri/db/access.o \ +./src/siri/db/aggregate.o \ +./src/siri/db/auth.o \ +./src/siri/db/buffer.o \ +./src/siri/db/db.o \ +./src/siri/db/ffile.o \ +./src/siri/db/fifo.o \ +./src/siri/db/forward.o \ +./src/siri/db/group.o \ +./src/siri/db/groups.o \ +./src/siri/db/initsync.o \ +./src/siri/db/insert.o \ +./src/siri/db/listener.o \ +./src/siri/db/lookup.o \ +./src/siri/db/median.o \ +./src/siri/db/misc.o \ +./src/siri/db/nodes.o \ +./src/siri/db/pcache.o \ +./src/siri/db/points.o \ +./src/siri/db/pool.o \ +./src/siri/db/pools.o \ +./src/siri/db/presuf.o \ +./src/siri/db/props.o \ +./src/siri/db/queries.o \ +./src/siri/db/query.o \ +./src/siri/db/re.o \ +./src/siri/db/reindex.o \ +./src/siri/db/replicate.o \ +./src/siri/db/series.o \ +./src/siri/db/server.o \ +./src/siri/db/servers.o \ +./src/siri/db/shard.o \ +./src/siri/db/shards.o \ +./src/siri/db/sset.o \ +./src/siri/db/tag.o \ +./src/siri/db/tags.o \ +./src/siri/db/tasks.o \ +./src/siri/db/tee.o \ +./src/siri/db/time.o \ +./src/siri/db/user.o \ +./src/siri/db/users.o \ +./src/siri/db/variance.o \ +./src/siri/db/walker.o + +C_DEPS += \ +./src/siri/db/access.d \ +./src/siri/db/aggregate.d \ +./src/siri/db/auth.d \ +./src/siri/db/buffer.d \ +./src/siri/db/db.d \ +./src/siri/db/ffile.d \ +./src/siri/db/fifo.d \ +./src/siri/db/forward.d \ +./src/siri/db/group.d \ +./src/siri/db/groups.d \ +./src/siri/db/initsync.d \ +./src/siri/db/insert.d \ +./src/siri/db/listener.d \ +./src/siri/db/lookup.d \ +./src/siri/db/median.d \ +./src/siri/db/misc.d \ +./src/siri/db/nodes.d \ +./src/siri/db/pcache.d \ +./src/siri/db/points.d \ +./src/siri/db/pool.d \ +./src/siri/db/pools.d \ +./src/siri/db/presuf.d \ +./src/siri/db/props.d \ +./src/siri/db/queries.d \ +./src/siri/db/query.d \ +./src/siri/db/re.d \ +./src/siri/db/reindex.d \ +./src/siri/db/replicate.d \ +./src/siri/db/series.d \ +./src/siri/db/server.d \ +./src/siri/db/servers.d \ +./src/siri/db/shard.d \ +./src/siri/db/shards.d \ +./src/siri/db/sset.d \ +./src/siri/db/tag.d \ +./src/siri/db/tags.d \ +./src/siri/db/tasks.d \ +./src/siri/db/tee.d \ +./src/siri/db/time.d \ +./src/siri/db/user.d \ +./src/siri/db/users.d \ +./src/siri/db/variance.d \ +./src/siri/db/walker.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/db/%.o: ../src/siri/db/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/siri/file/subdir.mk b/Release/src/siri/file/subdir.mk new file mode 100644 index 00000000..9e56a084 --- /dev/null +++ b/Release/src/siri/file/subdir.mk @@ -0,0 +1,23 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/file/handler.c \ +../src/siri/file/pointer.c + +OBJS += \ +./src/siri/file/handler.o \ +./src/siri/file/pointer.o + +C_DEPS += \ +./src/siri/file/handler.d \ +./src/siri/file/pointer.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/file/%.o: ../src/siri/file/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/siri/grammar/subdir.mk b/Release/src/siri/grammar/subdir.mk new file mode 100644 index 00000000..0b8f3f3a --- /dev/null +++ b/Release/src/siri/grammar/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/grammar/grammar.c + +OBJS += \ +./src/siri/grammar/grammar.o + +C_DEPS += \ +./src/siri/grammar/grammar.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/grammar/%.o: ../src/siri/grammar/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/siri/help/subdir.mk b/Release/src/siri/help/subdir.mk new file mode 100644 index 00000000..b168344a --- /dev/null +++ b/Release/src/siri/help/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/help/help.c + +OBJS += \ +./src/siri/help/help.o + +C_DEPS += \ +./src/siri/help/help.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/help/%.o: ../src/siri/help/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/siri/net/subdir.mk b/Release/src/siri/net/subdir.mk new file mode 100644 index 00000000..8c9b63d7 --- /dev/null +++ b/Release/src/siri/net/subdir.mk @@ -0,0 +1,42 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/net/bserver.c \ +../src/siri/net/clserver.c \ +../src/siri/net/pkg.c \ +../src/siri/net/promise.c \ +../src/siri/net/promises.c \ +../src/siri/net/protocol.c \ +../src/siri/net/stream.c \ +../src/siri/net/tcp.c \ +../src/siri/net/pipe.c + +OBJS += \ +./src/siri/net/bserver.o \ +./src/siri/net/clserver.o \ +./src/siri/net/pkg.o \ +./src/siri/net/promise.o \ +./src/siri/net/promises.o \ +./src/siri/net/protocol.o \ +./src/siri/net/stream.o \ +./src/siri/net/tcp.o \ +./src/siri/net/pipe.o + +C_DEPS += \ +./src/siri/net/bserver.d \ +./src/siri/net/clserver.d \ +./src/siri/net/pkg.d \ +./src/siri/net/promise.d \ +./src/siri/net/promises.d \ +./src/siri/net/protocol.d \ +./src/siri/net/stream.d \ +./src/siri/net/tcp.d \ +./src/siri/net/pipe.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/net/%.o: ../src/siri/net/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' diff --git a/Release/src/siri/service/subdir.mk b/Release/src/siri/service/subdir.mk new file mode 100644 index 00000000..9053e49c --- /dev/null +++ b/Release/src/siri/service/subdir.mk @@ -0,0 +1,26 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/service/account.c \ +../src/siri/service/client.c \ +../src/siri/service/request.c + +OBJS += \ +./src/siri/service/account.o \ +./src/siri/service/client.o \ +./src/siri/service/request.o + +C_DEPS += \ +./src/siri/service/account.d \ +./src/siri/service/client.d \ +./src/siri/service/request.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/args/%.o: ../src/siri/args/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/siri/subdir.mk b/Release/src/siri/subdir.mk new file mode 100644 index 00000000..10fc189f --- /dev/null +++ b/Release/src/siri/subdir.mk @@ -0,0 +1,50 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/siri/api.c \ +../src/siri/async.c \ +../src/siri/backup.c \ +../src/siri/buffersync.c \ +../src/siri/err.c \ +../src/siri/evars.c \ +../src/siri/health.c \ +../src/siri/heartbeat.c \ +../src/siri/optimize.c \ +../src/siri/siri.c \ +../src/siri/version.c + +OBJS += \ +./src/siri/api.o \ +./src/siri/async.o \ +./src/siri/backup.o \ +./src/siri/buffersync.o \ +./src/siri/err.o \ +./src/siri/evars.o \ +./src/siri/health.o \ +./src/siri/heartbeat.o \ +./src/siri/optimize.o \ +./src/siri/siri.o \ +./src/siri/version.o + +C_DEPS += \ +./src/siri/api.d \ +./src/siri/async.d \ +./src/siri/backup.d \ +./src/siri/buffersync.d \ +./src/siri/err.d \ +./src/siri/evars.d \ +./src/siri/health.d \ +./src/siri/heartbeat.d \ +./src/siri/optimize.d \ +./src/siri/siri.d \ +./src/siri/version.d + + +# Each subdirectory must supply rules for building sources it contributes +src/siri/%.o: ../src/siri/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/timeit/subdir.mk b/Release/src/timeit/subdir.mk new file mode 100644 index 00000000..76530cfd --- /dev/null +++ b/Release/src/timeit/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/timeit/timeit.c + +OBJS += \ +./src/timeit/timeit.o + +C_DEPS += \ +./src/timeit/timeit.d + + +# Each subdirectory must supply rules for building sources it contributes +src/timeit/%.o: ../src/timeit/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/vec/subdir.mk b/Release/src/vec/subdir.mk new file mode 100644 index 00000000..50facc57 --- /dev/null +++ b/Release/src/vec/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/vec/vec.c + +OBJS += \ +./src/vec/vec.o + +C_DEPS += \ +./src/vec/vec.d + + +# Each subdirectory must supply rules for building sources it contributes +src/vec/%.o: ../src/vec/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/xmath/subdir.mk b/Release/src/xmath/subdir.mk new file mode 100644 index 00000000..17a2185d --- /dev/null +++ b/Release/src/xmath/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/xmath/xmath.c + +OBJS += \ +./src/xmath/xmath.o + +C_DEPS += \ +./src/xmath/xmath.d + + +# Each subdirectory must supply rules for building sources it contributes +src/xmath/%.o: ../src/xmath/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/xpath/subdir.mk b/Release/src/xpath/subdir.mk new file mode 100644 index 00000000..092ea845 --- /dev/null +++ b/Release/src/xpath/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/xpath/xpath.c + +OBJS += \ +./src/xpath/xpath.o + +C_DEPS += \ +./src/xpath/xpath.d + + +# Each subdirectory must supply rules for building sources it contributes +src/xpath/%.o: ../src/xpath/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/src/xstr/subdir.mk b/Release/src/xstr/subdir.mk new file mode 100644 index 00000000..674d936b --- /dev/null +++ b/Release/src/xstr/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/xstr/xstr.c + +OBJS += \ +./src/xstr/xstr.o + +C_DEPS += \ +./src/xstr/xstr.d + + +# Each subdirectory must supply rules for building sources it contributes +src/xstr/%.o: ../src/xstr/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Release/subdir.mk b/Release/subdir.mk new file mode 100644 index 00000000..92aefa6e --- /dev/null +++ b/Release/subdir.mk @@ -0,0 +1,20 @@ +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../main.c + +OBJS += \ +./main.o + +C_DEPS += \ +./main.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(CC) -DNDEBUG -I../include -O3 -Wall -Wextra $(CPPFLAGS) $(CFLAGS) -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 00000000..2c7fb5ed --- /dev/null +++ b/debian/changelog @@ -0,0 +1,245 @@ +siridb-server (2.0.53-0~cb1) unstable; urgency=medium + + * New upstream release + - Fixed bug with rollback after failed HTTP request for a new database + - Use heap instead of stack for translating a forward query + - Fixed reaclloc with zero bug + - Update testing files + + -- Jeroen van der Heijden Wed, 22 Oct 2025 10:04:00 +0200 + +siridb-server (2.0.52-0~cb1) unstable; urgency=medium + + * New upstream release + - Fixed potential bug with empty log log lines in series. + + -- Jeroen van der Heijden Mon, 23 Sep 2024 16:57:00 +0200 + +siridb-server (2.0.50-0~cb1) unstable; urgency=medium + + * New upstream release + - Fixed potential bug while removing data + + -- Jeroen van der Heijden Tue, 21 Mar 2023 11:22:27 +0100 + +siridb-server (2.0.49-0~cb1) unstable; urgency=medium + + * New upstream release + - Fixed HTTP requests with new libuv version (#183, Thanks to Nick Rosbrook) + + -- Jeroen van der Heijden Mon, 19 Sep 2022 16:08:54 +0200 + +siridb-server (2.0.48-0~cb1) unstable; urgency=medium + + * New upstream release + - Implement smaller indexes for old data + - Added `head` and `tail` syntax queries (#180) + + -- Jeroen van der Heijden Fri, 15 Jul 2022 07:55:12 +0200 + +siridb-server (2.0.47-0~cb1) unstable; urgency=medium + + * New upstream release + - Fixed initializing `random` (Thanks to Jayakrishna Menon) + - Changed Tee from Unix to TCP socket (#179) + + -- Jeroen van der Heijden Fri, 29 Apr 2022 08:17:01 +0200 + +siridb-server (2.0.46-0~tt1) unstable; urgency=medium + + * New upstream release + - Switch to omap for storing promises (#175) + - Increased chunk size for numeric shards + + -- Jeroen van der Heijden Thu, 17 Feb 2022 14:21:58 +0100 + +siridb-server (2.0.45-0~tt1) unstable; urgency=medium + + * New upstream release + - Compatibility with libcleri v1.x + - Prioritize replication + + -- Jeroen van der Heijden Thu, 13 Jan 2022 11:37:26 +0100 + +siridb-server (2.0.44-0~tt1) unstable; urgency=medium + + * New upstream release + - Improve imap data structure (#168) + - Added ignore_broken_data option (@ubnt-michals, #172) + - Fixed siridb_time_now for arm32 builds (@srdgame, #169) + + -- Jeroen van der Heijden Tue, 06 Apr 2021 11:39:12 +0200 + +siridb-server (2.0.43-0~tt1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Improve cross building: (Closes: #-1) + + cross.patch: Make gcc substitutable. + + Let dh_auto_build pass cross tools to make. + + -- Helmut Grohne Tue, 09 Feb 2021 13:48:47 +0100 + +siridb-server (2.0.43-0~tt1) unstable; urgency=medium + + * New upstream release + - Fixed HTTP pipeline issue (@srdgame, #161) + - Fixed possible memory corruption (@ubnt-michals, #158) + - Changed SIRIDB_DB_PATH configuration (#154) + - Fixed shard duration for ARM builds (@srdgame, #164) + - Use IPv4 for health and API when configured (@ubnt-michals, #155) + + -- Jeroen van der Heijden Thu, 04 Feb 2021 15:36:02 +0100 + +siridb-server (2.0.42-0~tt1) unstable; urgency=medium + + * New upstream release + - Fixed handle ready status in Kubernetes statefulset (#153) + + -- Jeroen van der Heijden Thu, 12 Nov 2020 09:39:13 +0100 + +siridb-server (2.0.41-0~tt1) unstable; urgency=medium + + * New upstream release + - Fixed bug in insert loop (#147) + - Fixed loading databases with duplicated series (#148) + - Allow server names without defining a port (#150) + + -- Jeroen van der Heijden Wed, 04 Nov 2020 13:15:29 +0100 + +siridb-server (2.0.40-0~tt1) unstable; urgency=medium + + * New upstream release + - Added `alter tag` syntax (#144) + - Fixed list tags error when conditions are used (#145) + - Fixed division by zero bug (#146) + + -- Jeroen van der Heijden Fri, 25 Sep 2020 16:35:28 +0200 + +siridb-server (2.0.39-0~tt1) unstable; urgency=medium + + * New upstream release + - Added auto shard duration option (#141) + - Added `shard_duration` property on list series (#140) + - Added `timeval()` and `interval()` functions (#138) + - Fixed build error on 32 bit systems (#135) + + -- Jeroen van der Heijden Fri, 18 Sep 2020 15:50:10 +0200 + +siridb-server (2.0.38-0~tt1) unstable; urgency=medium + + * New upstream release + - Added tag support (#74) + - Fixed cleanup duplicate package (#134) + + -- Jeroen van der Heijden Fri, 28 Aug 2020 11:12:24 +0200 + +siridb-server (2.0.37-0~tt1) unstable; urgency=medium + + * New upstream release + - Fixed reading `series.dat` after unclean shutdown (#130) + - Fixed `gcc-10` compile errors (#132) + + -- Jeroen van der Heijden Thu, 23 Jul 2020 14:38:50 +0200 + +siridb-server (2.0.36-0~tt1) unstable; urgency=medium + + * New upstream release + - Fixed bug in max open files setting (#125) + - Accept Grafana compatible API requests (#129) + - Added support for configuration using environment variable (#128) + + -- Jeroen van der Heijden Wed, 22 Apr 2020 11:18:32 +0200 + +siridb-server (2.0.35-0~tt1) unstable; urgency=medium + + * New upstream release + - Added shard expiration (#123) + - Added HTTP API (#124) + + -- Jeroen van der Heijden Mon, 24 Feb 2020 16:23:37 +0100 + +siridb-server (2.0.34-0~tt1) unstable; urgency=medium + + * New upstream release + - Added readiness and liveness HTTP handler (#122) + - Fixed bug in sending packages to multiple SiriDB servers (#120) + + -- Jeroen van der Heijden Mon, 08 Jul 2019 14:18:56 +0200 + +siridb-server (2.0.33-0~tt1) unstable; urgency=medium + + * New upstream release + - Fixed deep recursion in series selection (#118) + - Fixed a few gcc version 8 warnings (#117) + - Increased package size limit and warning + - Added check for unexpected time-stamps in shards at startup + + -- Jeroen van der Heijden Thu, 04 Apr 2019 14:19:22 +0200 + +siridb-server (2.0.32-0~tt1) unstable; urgency=medium + + * New upstream release + - Fixed drop database + + -- Jeroen van der Heijden Fri, 11 Jan 2019 16:03:42 +0100 + +siridb-server (2.0.31-0~tt1) unstable; urgency=medium + + * New upstream release + - Added option for adding a data tee + - Added option to drop a database (#115) + - Remove limit of 4 database (#114) + - Do not return with an error if series do not exist (#112) + - Allow the use of parentheses in selecting series (#111) + - Fixed bug in merging series with high time precision (#108) + - Code forward compatible with upcoming cleri release + + -- Jeroen van der Heijden Thu, 10 Jan 2019 11:35:12 +0100 + +siridb-server (2.0.30-0~tt1) unstable; urgency=medium + + * New upstream release + - SiriDB Server can now compile with gnu89/gnu90 (#101) + - Removed deprecated info- and loaddb requests + - Added named pipe support (#104, @pavelxdd) + - Changed writing buffer length to reduce random io + - Added option to fsync the buffer on a configurable interval + - Use posix_fadvise() on the buffer file (@Svedrin) + - The buffer size can now be adjusted by using the database.conf + configuration file + - Added conversion of invalid value types + + -- Jeroen van der Heijden Fri, 12 Oct 2018 19:44:24 +0200 + +siridb-server (2.0.29-1) unstable; urgency=medium + + * New upstream release + + -- Paul Gevers Wed, 25 Jul 2018 21:57:12 +0200 + +siridb-server (2.0.28-1) unstable; urgency=medium + + * New upstream release + + -- Paul Gevers Mon, 02 Jul 2018 14:00:34 +0200 + +siridb-server (2.0.27-1) unstable; urgency=medium + + * New upstream release + * Update Maintainer and Vcs fields (Closes: #890700) + + -- Paul Gevers Mon, 28 May 2018 10:22:52 +0200 + +siridb-server (2.0.26-1) unstable; urgency=medium + + * New upstream release + * Drop all patches + * Add man page + + -- Paul Gevers Sat, 06 Jan 2018 07:54:21 +0100 + +siridb-server (2.0.25-1) unstable; urgency=medium + + * Initial release. (Closes: #882678) + + -- Paul Gevers Mon, 04 Dec 2017 21:40:02 +0100 diff --git a/debian/clean b/debian/clean new file mode 100644 index 00000000..71572d68 --- /dev/null +++ b/debian/clean @@ -0,0 +1 @@ +Release/siridb-server.1 diff --git a/debian/compat b/debian/compat new file mode 100644 index 00000000..b4de3947 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +11 diff --git a/debian/control b/debian/control new file mode 100644 index 00000000..4c4eeb40 --- /dev/null +++ b/debian/control @@ -0,0 +1,34 @@ +Source: siridb-server +Section: database +Priority: optional +Maintainer: SiriDB Maintainers +Uploaders: + Jeroen van der Heijden , + Paul Gevers , +Rules-Requires-Root: no +Build-Depends: + debhelper (>= 11~), + help2man, + libcleri-dev, + libpcre2-dev, + libuv1-dev, + uuid-dev, +Homepage: https://siridb.net/ +Vcs-Browser: https://salsa.debian.org/siridb-team/siridb-server +Vcs-Git: https://salsa.debian.org/siridb-team/siridb-server.git +Standards-Version: 4.1.3 + +Package: siridb-server +Architecture: any +Depends: + ucf, + ${misc:Depends}, + ${shlibs:Depends}, + libuv1 (>= 1.8.0), + libcleri0 (>= 0.9.3), +Description: SiriDB time series database server + SiriDB is a scalable, robust and fast time series database. Build from the + ground up SiriDB uses a mechanism to operate without a global index and allows + server resources to be added on the fly. SiriDB's query language includes + dynamic grouping of time series for easy analysis over large amounts of time + series. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 00000000..f645a16e --- /dev/null +++ b/debian/copyright @@ -0,0 +1,37 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ + +Files: * +Copyright: 2016-2022, Cesbit +License: Expat + +Files: debian/* +Copyright: 2017-2018 Paul Gevers +License: Expat + +License: Expat + The MIT License + . + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated + documentation files (the "Software"), to deal in the Software + without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to + whom the Software is furnished to do so, subject to the + following conditions: + . + The above copyright notice and this permission notice shall + be included in all copies or substantial portions of the + Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT + WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE AND NONINFRINGEMENT. IN NO EVENT + SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. diff --git a/debian/dirs b/debian/dirs new file mode 100644 index 00000000..cc24fab1 --- /dev/null +++ b/debian/dirs @@ -0,0 +1,2 @@ +etc/siridb +var/lib/siridb diff --git a/debian/docs b/debian/docs new file mode 100644 index 00000000..1538d74a --- /dev/null +++ b/debian/docs @@ -0,0 +1,2 @@ +README.md +docs/* diff --git a/debian/install b/debian/install new file mode 100644 index 00000000..ac1b34f0 --- /dev/null +++ b/debian/install @@ -0,0 +1,3 @@ +Release/siridb-server usr/lib/siridb-server +help usr/share/siridb-server +siridb.conf usr/share/siridb-server/conf_templates diff --git a/debian/links b/debian/links new file mode 100644 index 00000000..0de57b22 --- /dev/null +++ b/debian/links @@ -0,0 +1,3 @@ +usr/lib/siridb-server/siridb-server usr/bin/siridb-server +usr/share/siridb-server/help usr/lib/siridb-server/help +usr/share/siridb-server/help usr/share/doc/siridb-server/help diff --git a/debian/manpages b/debian/manpages new file mode 100644 index 00000000..71572d68 --- /dev/null +++ b/debian/manpages @@ -0,0 +1 @@ +Release/siridb-server.1 diff --git a/debian/postinst b/debian/postinst new file mode 100644 index 00000000..eb394e70 --- /dev/null +++ b/debian/postinst @@ -0,0 +1,8 @@ +#!/bin/sh +set -e + +ucf --debconf-ok /usr/share/siridb-server/conf_templates/siridb.conf /etc/siridb/siridb.conf +ucfr siridb-server /etc/siridb/siridb.conf + +#DEBHELPER# +exit 0 diff --git a/debian/postrm b/debian/postrm new file mode 100644 index 00000000..b08732ce --- /dev/null +++ b/debian/postrm @@ -0,0 +1,24 @@ +#!/bin/sh +set -e + +config_file=/etc/siridb/siridb.conf + +case "$1" in + purge) + [ -d "/var/lib/siridb" ] && rm -rf /var/lib/siridb + if which ucf >/dev/null 2>&1; then + ucf --purge $config_file + fi + if [ -x "`which ucfr 2>/dev/null`" ]; then + ucfr --purge siridb-server $config_file + fi + for ext in .ucf-new .ucf-old .ucf-dist ""; do + rm -f "$config_file$ext" + done + ;; + remove) + ;; +esac + +#DEBHELPER# +exit 0 diff --git a/debian/rules b/debian/rules new file mode 100755 index 00000000..875c4440 --- /dev/null +++ b/debian/rules @@ -0,0 +1,14 @@ +#!/usr/bin/make -f + +export DEB_BUILD_MAINT_OPTIONS=hardening=+all + +%: + dh $@ + +override_dh_auto_build-arch: + dh_auto_build --sourcedirectory=Release + help2man -N -n"time series database server" Release/siridb-server > Release/siridb-server.1 + +override_dh_auto_clean: + $(MAKE) --directory=Release clean + dh_auto_clean diff --git a/debian/siridb-server.service b/debian/siridb-server.service new file mode 100644 index 00000000..47a57011 --- /dev/null +++ b/debian/siridb-server.service @@ -0,0 +1,13 @@ +[Unit] +Description=SiriDB Server +After=network.target + +[Service] +ExecStart=/usr/bin/siridb-server --config /etc/siridb/siridb.conf --log-level warning +StandardOutput=journal +LimitNOFILE=65535 +TimeoutStartSec=10 +TimeoutStopSec=300 + +[Install] +WantedBy=multi-user.target diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 00000000..8ce3097d --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,3 @@ +Test-Command: NOMEMTEST=1 make --directory=Release test +Features: test-name=siridb-unit-tests +Depends: @, @builddeps@ diff --git a/debian/watch b/debian/watch new file mode 100644 index 00000000..bc17067b --- /dev/null +++ b/debian/watch @@ -0,0 +1,4 @@ +version=4 +opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%siridb-server-$1.tar.gz%" \ + https://github.com/cesbit/siridb-server/releases \ + (?:.*?/)?v?(\d[\d.]*)\.tar\.gz diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 00000000..c2701d56 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,42 @@ +FROM amd64/alpine +RUN apk update && \ + apk upgrade && \ + apk add gcc make libuv-dev musl-dev pcre2-dev yajl-dev util-linux-dev linux-headers git && \ + git clone https://github.com/cesbit/libcleri.git /tmp/libcleri && \ + cd /tmp/libcleri/Release && \ + make all && \ + make install && \ + git clone https://github.com/SiriDB/siridb-server.git /tmp/siridb-server && \ + cd /tmp/siridb-server/Release && \ + make clean && \ + make + +FROM amd64/alpine +RUN apk update && \ + apk add pcre2 libuv libuuid yajl && \ + mkdir -p /etc/siridb && \ + mkdir -p /var/lib/siridb +COPY --from=0 /tmp/siridb-server/Release/siridb-server /usr/local/bin/ +COPY --from=0 /usr/lib/libcleri* /usr/lib/ + +# Data +VOLUME ["/var/lib/siridb/"] +# Client (Socket) connections +EXPOSE 9000 +# Server (Socket) connections +EXPOSE 9010 +# Client (HTTP) connections +EXPOSE 9080 +# Status connection +EXPOSE 8080 + +# Overwrite default configuration parameters +ENV SIRIDB_BIND_SERVER_ADDRESS 0.0.0.0 +ENV SIRIDB_BIND_CLIENT_ADDRESS 0.0.0.0 +ENV SIRIDB_HTTP_API_PORT 9080 +ENV SIRIDB_HTTP_STATUS_PORT 8080 +ENV SIRIDB_ENABLE_SHARD_COMPRESSION 1 +ENV SIRIDB_ENABLE_SHARD_AUTO_DURATION 1 +ENV SIRIDB_BUFFER_SYNC_INTERVAL 500 + +ENTRYPOINT ["/usr/local/bin/siridb-server"] diff --git a/docs/Kubernetes/README.md b/docs/Kubernetes/README.md new file mode 100644 index 00000000..a2d979c8 --- /dev/null +++ b/docs/Kubernetes/README.md @@ -0,0 +1,5 @@ +# Running SiriDB in Kubernetes + +This folder contains a Service, StatefulSet and a PodDisruptionBudget definition which can be used as example configuration +for running SiriDB in Kubernetes. + diff --git a/docs/Kubernetes/pdb.yaml b/docs/Kubernetes/pdb.yaml new file mode 100644 index 00000000..cb645897 --- /dev/null +++ b/docs/Kubernetes/pdb.yaml @@ -0,0 +1,9 @@ +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: siridb-pdb +spec: + maxUnavailable: 1 + selector: + matchLabels: + app: siridb diff --git a/docs/Kubernetes/service.yaml b/docs/Kubernetes/service.yaml new file mode 100644 index 00000000..1a17ced3 --- /dev/null +++ b/docs/Kubernetes/service.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: siridb + name: siridb +spec: + clusterIP: None + publishNotReadyAddresses: true + ports: + - name: status + port: 8080 + - name: client + port: 9000 + - name: http + port: 9080 + - name: server + port: 9010 + selector: + app: siridb \ No newline at end of file diff --git a/docs/Kubernetes/statefulset.yaml b/docs/Kubernetes/statefulset.yaml new file mode 100644 index 00000000..0eff9832 --- /dev/null +++ b/docs/Kubernetes/statefulset.yaml @@ -0,0 +1,96 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: siridb + labels: + app: siridb +spec: + selector: + matchLabels: + app: siridb + serviceName: siridb + replicas: 2 # Multiple of 2, to create pools with two servers. + updateStrategy: + type: RollingUpdate + podManagementPolicy: Parallel + template: + metadata: + labels: + app: siridb + spec: + terminationGracePeriodSeconds: 120 + dnsConfig: + searches: + - siridb.default.svc.cluster.local + tolerations: # wait 4 hour as synchronizing might take some time + - key: "node.kubernetes.io/not-ready" + operator: "Exists" + effect: "NoExecute" + tolerationSeconds: 14400 + - key: "node.kubernetes.io/unreachable" + operator: "Exists" + effect: "NoExecute" + tolerationSeconds: 14400 + containers: + - name: siridb + image: siridb/siridb-server:2.0.49 # Pin to a specific version + imagePullPolicy: Always + args: ["--managed"] # Tells SiriDB it will be managed by Kubernetes + env: + - name: SIRIDB_HTTP_STATUS_PORT + value: "8080" + - name: SIRIDB_HTTP_API_PORT + value: "9080" + - name: SIRIDB_ENABLE_SHARD_COMPRESSION + value: "1" + - name: SIRIDB_ENABLE_SHARD_AUTO_DURATION + value: "1" + - name: SIRIDB_BUFFER_SYNC_INTERVAL + value: "500" + - name: SIRIDB_DEFAULT_DB_PATH + value: /mnt/siridb/ + - name: SIRIDB_BIND_SERVER_ADDRESS + value: "0.0.0.0" + - name: SIRIDB_BIND_CLIENT_ADDRESS + value: "0.0.0.0" + - name: SIRIDB_SERVER_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + ports: + - name: status + containerPort: 8080 + - name: client + containerPort: 9000 + - name: http + containerPort: 9080 + - name: server + containerPort: 9010 + volumeMounts: + - name: data + mountPath: /mnt/siridb/ + resources: + requests: + memory: 100M # For example, 3Gi for large data sets + livenessProbe: + httpGet: + path: /healthy + port: 8080 + initialDelaySeconds: 1800 + periodSeconds: 20 + timeoutSeconds: 10 + readinessProbe: + httpGet: + path: /ready + port: 8080 + initialDelaySeconds: 20 + periodSeconds: 20 + timeoutSeconds: 10 + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 300Gi # For example, 300Gi for large data sets diff --git a/docs/uml/siri_class_diagram.uxf b/docs/uml/siri_class_diagram.uxf new file mode 100644 index 00000000..7ae3b260 --- /dev/null +++ b/docs/uml/siri_class_diagram.uxf @@ -0,0 +1,574 @@ + + + 9 + + UMLClass + + 684 + 414 + 207 + 432 + + siridb_t +-- +uuid: uuid_t +tz: iso8601_tz_t +shard_mask_num: uint16_t +shard_mask_log: uint16_t +buffer_size: size_t +buffer_len: size_t +start_ts: uint32_t +max_series_id: uint32_t +duration_num: uint64_t +duration_log: uint64_t +dbname: *char +dbpath: *char +buffer_path: *char +time: *siridb_time_t +server: *siridb_server_t +replica: *siridb_server_t +users: *siridb_users_t +servers: *siridb_servers_t +pools: *siridb_pools_t +series: *ct_node_t +series_map: *imap64_t +shards: *imap64_t +buffer_fp: *FILE +-- +siridb_new(): *siridb_t +siridb_free(): void + + + + + UMLClass + + 0 + 414 + 207 + 126 + + siri_t +-- +loop: *uv_loop_t +grammar: *cleri_grammar_t +siridb_list: *siridb_list_t +fh: *siri_fh_t +-- +siri_start(): int +siri_free(): void + + + + + Relation + + 198 + 477 + 153 + 36 + + lt=<<<<<- +m1=1 +m2=1 + 10.0;10.0;150.0;10.0 + + + Relation + + 288 + 378 + 99 + 90 + + lt=<<<<<- +m2=0..* +group=1 + 90.0;40.0;90.0;10.0;10.0;10.0;10.0;70.0;50.0;70.0 + + + UMLClass + + 333 + 414 + 207 + 108 + + siridb_list_t +-- +siridb: *siridb_t +next: *siridb_list_t +-- +siridb_list_new(): *siridb_list_t +siridb_list_free(): void +siridb_get(): *siridb_t +group=1 + + + + Relation + + 531 + 477 + 171 + 36 + + lt=<<<<<- +m1=1 +m2=0..* + 10.0;10.0;170.0;10.0 + + + UMLClass + + 0 + 612 + 207 + 126 + + siri_fh_t +-- +size: uint16_t +idx: uint16_t +fpointers: **siri_fp_t +-- +siri_fh_new(): *siri_fh_t +siri_fh_free(): void +siri_fopen(): int + + + + + UMLClass + + 0 + 873 + 207 + 99 + + siri_fp_t +-- +fp: *FILE +ref: uint8_t +-- +siri_fp_new(): *siri_fp_t +siri_fp_decref(): void + + + + Relation + + 99 + 531 + 27 + 99 + + lt=<<<<<-> +m1=1 +m2=1 + 10.0;10.0;10.0;90.0 + + + Relation + + 99 + 729 + 63 + 162 + + lt=<<<<<-> +m1=1 +m2=0..size + 10.0;10.0;10.0;160.0 + + + UMLClass + + 306 + 612 + 261 + 144 + + siridb_shard_t +-- +id: uint64_t +tp: uint8_t +status: uint8_t +fp: *siri_fp_t +-- +siridb_shard_create(): *siridb_shard_t +siridb_shard_load(): int +siridb_shard_free(): void + + + + Relation + + 558 + 630 + 144 + 36 + + lt=<<<<<- +m1=1 +m2=0..* + 140.0;10.0;10.0;10.0 + + + Relation + + 198 + 747 + 180 + 180 + + lt=<<<<- +m1=1 +m2=1 + 180.0;10.0;180.0;170.0;10.0;170.0 + + + Relation + + 198 + 621 + 126 + 36 + + lt=<- +siri_fopen + 10.0;20.0;120.0;20.0 + + + UMLClass + + 1017 + 414 + 279 + 153 + + siridb_users_t +-- +user: *siridb_user_t +next: *siridb_users_t +-- +siridb_users_load(): *siridb_users_t +siridb_users_free(): void +siridb_users_add_user(): int +siridb_users_drop_user(): int +siridb_users_get_user(): *siridb_user_t +siridb_users_save(): int +group=2 + + + + Relation + + 972 + 378 + 99 + 90 + + lt=<<<<<- +m2=0..* +group=2 + 90.0;40.0;90.0;10.0;10.0;10.0;10.0;70.0;50.0;70.0 + + + Relation + + 882 + 477 + 153 + 36 + + lt=<<<<<- +m1=1 +m2=1 + 10.0;10.0;150.0;10.0 + + + UMLClass + + 1422 + 414 + 279 + 144 + + siridb_user_t +-- +username: *char +password: *char +access_bit: siridb_access_t +-- +siridb_user_new(): *siridb_user_t +siridb_user_free(): void +siridb_user_prop(): void +siridb_user_set_password(): int +siridb_user_check_access(): int + + + + Relation + + 1287 + 477 + 153 + 36 + + lt=<<<<<- +m1=1 +m2=0..* + 10.0;10.0;150.0;10.0 + + + UMLClass + + 1017 + 621 + 369 + 216 + + siridb_series_t +-- +id: uint32_t +tp: uint8_t +mask: uint16_t +buffer: *siridb_buffer_t +index: *siridb_series_idx_t +-- +siridb_series_load(): int +siridb_series_new(): *siridb_series_t +siridb_series_free(): void +siridb_series_add_idx_num32(): void +siridb_series_add_idx_num64(): void +siridb_series_add_point(): void +siridb_series_get_points_num32(): *siridb_points_t + + + + Relation + + 882 + 648 + 153 + 36 + + lt=<<<<<- +m1=1 +m2=0..* + 10.0;10.0;150.0;10.0 + + + UMLNote + + 126 + 765 + 225 + 72 + + both siri_fh_t and siridb_shard_t +can hold a reference to siri_fp_t, +the last decref will actually +destroy the object. +bg=light_gray + + + + UMLClass + + 1017 + 909 + 369 + 99 + + siridb_series_idx_t +-- +len: uint32_t +has_overlap: uint8_t +idx: *void +-- +Methods are provided by siridb_series_t + + + + Relation + + 1179 + 828 + 27 + 99 + + lt=<<<<<- +m1=1 +m2=1 + 10.0;10.0;10.0;90.0 + + + UMLClass + + 1215 + 1080 + 279 + 126 + + idx_num64_t +-- +start_ts: uint64_t +end_ts: uint64_t +shard: *siridb_shard_t +pos: uint32_t +len: uint16_t +-- +Methods are provided by siridb_series_t + + + + Relation + + 1278 + 999 + 63 + 99 + + lt=<<<<<- +m1=1 +m2=0..len + 10.0;10.0;10.0;90.0 + + + UMLClass + + 909 + 1080 + 279 + 126 + + idx_num32_t +-- +start_ts: uint32_t +end_ts: uint32_t +shard: *siridb_shard_t +pos: uint32_t +len: uint16_t +-- +Methods are provided by siridb_series_t + + + + Relation + + 1098 + 999 + 63 + 99 + + lt=<<<<<- +m1=1 +m2=0..len + 10.0;10.0;10.0;90.0 + + + Relation + + 486 + 747 + 639 + 522 + + lt=<<<<- +m1=1 +m2=1 + 690.0;510.0;690.0;560.0;10.0;560.0;10.0;10.0 + + + Relation + + 450 + 747 + 864 + 549 + + lt=<<<<- +m1=1 +m2=1 + 940.0;510.0;940.0;590.0;10.0;590.0;10.0;10.0 + + + UMLNote + + 783 + 1008 + 225 + 63 + + idx can be used with either +idx_num32_t or idx_num64_t, +not both. + +bg=light_gray + + + + UMLClass + + 576 + 180 + 315 + 126 + + siridb_pools_t +-- +size: uint16_t +lookup: *siridb_lookup_t +pool: *siridb_pool_t +-- +siridb_pools_init(): void +siridb_pools_free(): void +-siridb_pools_gen_lookup(): *siridb_lookup_t + + + + Relation + + 747 + 297 + 27 + 135 + + lt=<<<<<- +m1=1 +m2=1 + 10.0;130.0;10.0;10.0 + + + UMLClass + + 576 + 0 + 315 + 99 + + siridb_pool_t +-- +size: uint16_t +server: *siridb_server_t[2] +-- +siridb_lookup_sn(): uint16_t +siridb_lookup_sn_raw(): uint16_t + + + + Relation + + 747 + 90 + 63 + 108 + + lt=<<<<<- +m1=1 +m2=0..size + 10.0;100.0;10.0;10.0 + + diff --git a/docs/uml/siri_parser.uxf b/docs/uml/siri_parser.uxf new file mode 100644 index 00000000..5ee8d689 --- /dev/null +++ b/docs/uml/siri_parser.uxf @@ -0,0 +1,3009 @@ + + + 10 + + Relation + + 2420 + 590 + 30 + 100 + + lt=-> + + 10.0;10.0;10.0;80.0 + + + UMLSpecialState + + 2410 + 370 + 40 + 40 + + type=initial + + + + Relation + + 2440 + 380 + 170 + 100 + + lt=-> + 10.0;10.0;150.0;10.0;150.0;80.0 + + + Relation + + 2420 + 400 + 30 + 180 + + lt=-> + 10.0;10.0;10.0;160.0 + + + Relation + + 2540 + 490 + 70 + 110 + + lt=-> + 50.0;10.0;50.0;90.0;10.0;90.0 + + + Relation + + 2420 + 700 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + Relation + + 2540 + 790 + 70 + 90 + + lt=-> + 10.0;10.0;50.0;10.0;50.0;70.0 + + + Relation + + 2420 + 810 + 30 + 150 + + lt=<<<- + 10.0;130.0;10.0;10.0 + + + Relation + + 2540 + 890 + 70 + 90 + + lt=<<<- + 10.0;70.0;50.0;70.0;50.0;10.0 + + + UMLState + + 2170 + 1030 + 230 + 40 + + free_user_object + + + + Relation + + 2420 + 970 + 30 + 170 + + lt=-> + 10.0;10.0;10.0;150.0 + + + Relation + + 2210 + 680 + 130 + 280 + + lt=<<<- +<illegal +password> + 10.0;260.0;10.0;10.0;110.0;10.0 + + + Relation + + 2210 + 970 + 30 + 80 + + lt=-> + 10.0;10.0;10.0;60.0 + + + Relation + + 1710 + 590 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + UMLSpecialState + + 1700 + 370 + 40 + 40 + + type=initial + + + + Relation + + 1710 + 400 + 30 + 180 + + lt=-> + 10.0;10.0;10.0;160.0 + + + Relation + + 1710 + 700 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + Relation + + 1830 + 790 + 70 + 90 + + lt=-> + 10.0;10.0;50.0;10.0;50.0;70.0 + + + Relation + + 1710 + 810 + 30 + 150 + + lt=<<<- + 10.0;130.0;10.0;10.0 + + + Relation + + 1830 + 890 + 70 + 90 + + lt=<<<- + 10.0;70.0;50.0;70.0;50.0;10.0 + + + Relation + + 1710 + 970 + 30 + 110 + + lt=-> + 10.0;10.0;10.0;90.0 + + + Relation + + 1480 + 790 + 180 + 170 + + lt=<<<- +error changing user + 10.0;150.0;10.0;10.0;130.0;10.0 + + + Relation + + 1480 + 970 + 150 + 130 + + lt=-> + 10.0;10.0;10.0;110.0;130.0;110.0 + + + UMLSpecialState + + 2410 + 1220 + 40 + 40 + + type=flow_final + + + + UMLState + + 2320 + 1120 + 230 + 40 + + free_query + + + + Relation + + 2350 + 1060 + 30 + 80 + + lt=<<<- + 10.0;60.0;10.0;10.0 + + + Relation + + 2420 + 1150 + 30 + 90 + + lt=<<<- + 10.0;70.0;10.0;10.0 + + + UMLSpecialState + + 1700 + 1150 + 40 + 40 + + type=flow_final + + + + UMLState + + 1610 + 1060 + 230 + 40 + + free_query + + + + Relation + + 1710 + 1090 + 30 + 80 + + lt=<<<- + 10.0;60.0;10.0;10.0 + + + UMLSpecialState + + 970 + 370 + 40 + 40 + + type=initial + + + + Relation + + 1000 + 380 + 170 + 100 + + lt=-> + 10.0;10.0;150.0;10.0;150.0;80.0 + + + Relation + + 980 + 400 + 30 + 180 + + lt=-> + 10.0;10.0;10.0;160.0 + + + UMLSpecialState + + 970 + 940 + 40 + 40 + + type=flow_final + + + + UMLState + + 880 + 850 + 230 + 40 + + free_query + + + + Relation + + 980 + 880 + 30 + 80 + + lt=<<<- + 10.0;60.0;10.0;10.0 + + + Relation + + 1100 + 690 + 70 + 90 + + lt=<<<- + 10.0;70.0;50.0;70.0;50.0;10.0 + + + Relation + + 1060 + 490 + 110 + 90 + + lt=-> + 90.0;10.0;90.0;40.0;10.0;40.0;10.0;70.0 + + + Relation + + 1060 + 590 + 110 + 90 + + lt=-> + 10.0;10.0;10.0;40.0;90.0;40.0;90.0;70.0 + + + Relation + + 980 + 770 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + Relation + + 980 + 590 + 30 + 170 + + lt=<<<- + 10.0;150.0;10.0;10.0 + + + Relation + + 2130 + 570 + 210 + 390 + + lt=<<<- +<access denied> +<cluster offline> +fg=blue + 10.0;370.0;10.0;10.0;190.0;10.0 + + + Relation + + 1420 + 570 + 210 + 390 + + lt=<<<- +<access denied> +<cluster offline> +<use does not exist> + 10.0;370.0;10.0;10.0;190.0;10.0 + + + UMLSpecialState + + 420 + 370 + 40 + 40 + + type=initial + + + + Relation + + 450 + 380 + 170 + 100 + + lt=-> + 10.0;10.0;150.0;10.0;150.0;80.0 + + + Relation + + 430 + 400 + 30 + 180 + + lt=-> + 10.0;10.0;10.0;160.0 + + + UMLSpecialState + + 420 + 940 + 40 + 40 + + type=flow_final + + + + UMLState + + 330 + 850 + 230 + 40 + + free_query + + + + Relation + + 430 + 880 + 30 + 80 + + lt=<<<- + 10.0;60.0;10.0;10.0 + + + Relation + + 550 + 690 + 70 + 90 + + lt=<<<- + 10.0;70.0;50.0;70.0;50.0;10.0 + + + Relation + + 510 + 490 + 110 + 90 + + lt=-> + 90.0;10.0;90.0;40.0;10.0;40.0;10.0;70.0 + + + Relation + + 510 + 590 + 110 + 90 + + lt=-> + 10.0;10.0;10.0;40.0;90.0;40.0;90.0;70.0 + + + Relation + + 430 + 770 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + Relation + + 430 + 590 + 30 + 170 + + lt=<<<- + 10.0;150.0;10.0;10.0 + + + Relation + + 170 + 770 + 180 + 120 + + lt=-> + 10.0;10.0;10.0;100.0;160.0;100.0 + + + Relation + + 170 + 570 + 180 + 190 + + lt=<<<- +access denied + 10.0;170.0;10.0;10.0;160.0;10.0 + + + UMLNote + + 50 + 0 + 670 + 240 + + These diagrams are describing how queries are parsed. + +Each diagram starts with an initial state where the start time +is already set and time-expressions are already parsed and translated +to positive integer values. + +All enter and exit functions can be found in "siri/parser/listener.c" + +When we talk about the "master" server we are actually talking about +the server who received the query. This server has the "master" role +for processing the query. +fontsize=16 +bg=gray + + + + UMLSpecialState + + 430 + 1940 + 40 + 40 + + type=initial +group=1 + + + + Relation + + 460 + 1950 + 170 + 100 + + lt=-> +group=1 + 10.0;10.0;150.0;10.0;150.0;80.0 + + + Relation + + 440 + 1970 + 30 + 180 + + lt=-> +group=1 + 10.0;10.0;10.0;160.0 + + + Relation + + 560 + 2060 + 70 + 110 + + lt=-> +group=1 + 50.0;10.0;50.0;90.0;10.0;90.0 + + + Relation + + 520 + 2160 + 30 + 250 + + lt=-> + 10.0;10.0;10.0;230.0 + + + UMLNote + + 200 + 290 + 400 + 70 + + show statement +-- +This statement will be answered by the master only. +bg=light_gray + + + + UMLNote + + 810 + 290 + 400 + 70 + + calculator (for time) statement +-- +This statement will be answered by the master only. +bg=light_gray + + + + UMLNote + + 1480 + 290 + 400 + 70 + + alter user statement +-- +Can be used to change a users password. +All servers must process this query. +bg=light_gray + + + + UMLNote + + 2190 + 290 + 400 + 70 + + create user statement +-- +Can be used to change a users password. +All servers must process this query. +bg=light_gray + + + + UMLNote + + 820 + 2280 + 280 + 80 + + Probably we can align query_xxx_t +and create xxx functions which +can be used by all statements. +bg=blue + + + + Relation + + 680 + 2350 + 220 + 60 + + lt=.. + 200.0;10.0;10.0;40.0 + + + Relation + + 2130 + 970 + 210 + 190 + + lt=-> +fg=blue + 10.0;10.0;10.0;170.0;190.0;170.0 + + + Relation + + 520 + 2420 + 30 + 90 + + lt=-> + 10.0;10.0;10.0;70.0 + + + Relation + + 470 + 2160 + 30 + 350 + + lt=-> + + 10.0;10.0;10.0;330.0 + + + Relation + + 1720 + 380 + 180 + 100 + + lt=-> + 10.0;10.0;160.0;10.0;160.0;80.0 + + + Relation + + 1790 + 490 + 110 + 90 + + lt=-> + 90.0;10.0;90.0;40.0;10.0;40.0;10.0;70.0 + + + Relation + + 420 + 2160 + 30 + 450 + + lt=-> + + 10.0;10.0;10.0;430.0 + + + Relation + + 470 + 2520 + 30 + 90 + + lt=-> + 10.0;10.0;10.0;70.0 + + + Relation + + 620 + 2420 + 100 + 210 + + lt=-> + 80.0;10.0;80.0;190.0;10.0;190.0 + + + Relation + + 370 + 2160 + 30 + 550 + + lt=-> + + 10.0;10.0;10.0;530.0 + + + Relation + + 560 + 2420 + 170 + 310 + + lt=-> + 150.0;10.0;150.0;290.0;10.0;290.0 + + + Relation + + 470 + 2520 + 200 + 190 + + lt=-> + 180.0;10.0;180.0;140.0;10.0;140.0;10.0;170.0 + + + Relation + + 420 + 2620 + 30 + 90 + + lt=-> + 10.0;10.0;10.0;70.0 + + + Relation + + 560 + 2800 + 70 + 90 + + lt=<<<- + 10.0;70.0;50.0;70.0;50.0;10.0 + + + UMLState + + 340 + 2940 + 230 + 40 + + query_list_free + + + + Relation + + 440 + 2880 + 30 + 80 + + lt=-> + 10.0;10.0;10.0;60.0 + + + Relation + + 210 + 2880 + 150 + 100 + + lt=-> + 10.0;10.0;10.0;80.0;130.0;80.0 + + + UMLSpecialState + + 430 + 3130 + 40 + 40 + + type=flow_final + + + + UMLState + + 340 + 3030 + 230 + 40 + + free_query + + + + Relation + + 440 + 2970 + 30 + 80 + + lt=<<<- + 10.0;60.0;10.0;10.0 + + + Relation + + 440 + 3060 + 30 + 90 + + lt=<<<- + 10.0;70.0;10.0;10.0 + + + Relation + + 150 + 2880 + 210 + 190 + + lt=-> +fg=blue + 10.0;10.0;10.0;170.0;190.0;170.0 + + + Relation + + 520 + 2720 + 110 + 70 + + lt=-> + 10.0;10.0;10.0;30.0;90.0;30.0;90.0;50.0 + + + Relation + + 440 + 2720 + 30 + 150 + + lt=<<<- + 10.0;130.0;10.0;10.0 + + + Relation + + 150 + 2140 + 210 + 730 + + lt=<<<- +<access denied> +fg=blue + 10.0;710.0;10.0;10.0;190.0;10.0 + + + Relation + + 210 + 2500 + 260 + 370 + + lt=<<<- + 10.0;350.0;10.0;10.0;240.0;10.0 + + + Relation + + 230 + 2600 + 190 + 270 + + lt=<<<- + 10.0;250.0;10.0;10.0;170.0;10.0 + + + UMLNote + + 210 + 1860 + 400 + 70 + + list users statement +-- +This statement will be answered by the master only. + +bg=light_gray + + + + UMLState + + 340 + 2850 + 230 + 40 + + siridb_send_query_result + + + + UMLState + + 500 + 2770 + 230 + 40 + + exit_timeit_stmt + + + + UMLState + + 2480 + 860 + 230 + 40 + + exit_timeit_stmt + + + + UMLState + + 1770 + 860 + 230 + 40 + + exit_timeit_stmt + + + + UMLState + + 1040 + 660 + 230 + 40 + + exit_timeit_stmt + + + + UMLState + + 490 + 660 + 230 + 40 + + exit_timeit_stmt + + + + UMLState + + 2320 + 940 + 230 + 40 + + siridb_send_query_result + + + + UMLState + + 1610 + 940 + 230 + 40 + + siridb_send_query_result + + + + UMLState + + 880 + 740 + 230 + 40 + + siridb_send_query_result + + + + UMLState + + 330 + 740 + 230 + 40 + + siridb_send_query_result + + + + UMLState + + 80 + 2850 + 230 + 40 + + siridb_query_send_error + + + + UMLState + + 2060 + 940 + 230 + 40 + + siridb_query_send_error + + + + UMLState + + 1350 + 940 + 230 + 40 + + siridb_query_send_error + + + + UMLState + + 70 + 740 + 230 + 40 + + siridb_query_send_error + + + + UMLState + + 340 + 2690 + 230 + 40 + + exit_list_users_stmt + + + + UMLState + + 400 + 2590 + 230 + 40 + + enter_limit_expr +bg=orange + + + + UMLState + + 450 + 2490 + 230 + 40 + + enter_where_user_stmt +bg=orange + + + + UMLState + + 500 + 2390 + 230 + 40 + + enter_user_columns + + + + UMLState + + 340 + 2130 + 230 + 40 + + enter_list_stmt + + + + UMLState + + 500 + 2030 + 230 + 40 + + enter_timeit_stmt +group=1 + + + + UMLState + + 2480 + 460 + 230 + 40 + + enter_timeit_stmt + + + + UMLState + + 1770 + 460 + 230 + 40 + + enter_timeit_stmt + + + + UMLState + + 1040 + 460 + 230 + 40 + + enter_timeit_stmt + + + + UMLState + + 490 + 460 + 230 + 40 + + enter_timeit_stmt + + + + UMLState + + 2320 + 560 + 230 + 40 + + enter_create_user_stmt + + + + UMLState + + 2320 + 670 + 230 + 40 + + enter_set_password_expr + + + + UMLState + + 2320 + 780 + 230 + 40 + + exit_create_user_stmt + + + + UMLState + + 1610 + 560 + 230 + 40 + + enter_alter_user_stmt + + + + UMLState + + 1610 + 780 + 230 + 40 + + exit_alter_user_stmt + + + + UMLState + + 1610 + 670 + 230 + 40 + + enter_set_password_expr + + + + UMLState + + 880 + 560 + 230 + 40 + + exit_calc_stmt + + + + UMLState + + 330 + 560 + 230 + 40 + + exit_show_stmt + + + + Relation + + 670 + 2350 + 340 + 180 + + lt=.. + 320.0;10.0;100.0;130.0;10.0;160.0 + + + UMLState + + 3330 + 560 + 230 + 40 + + enter_grant_stmt + + + + UMLSpecialState + + 3420 + 370 + 40 + 40 + + type=initial + + + + Relation + + 3450 + 380 + 170 + 100 + + lt=-> + 10.0;10.0;150.0;10.0;150.0;80.0 + + + Relation + + 3430 + 400 + 30 + 180 + + lt=-> + 10.0;10.0;10.0;160.0 + + + Relation + + 3550 + 490 + 70 + 110 + + lt=-> + 50.0;10.0;50.0;90.0;10.0;90.0 + + + UMLState + + 3490 + 460 + 230 + 40 + + enter_timeit_stmt + + + + UMLNote + + 3190 + 290 + 410 + 70 + + grant statement +-- +Can be used to grant access rights to a user or network. +All servers must process this query. +bg=light_gray + + + + UMLNote + + 2100 + 450 + 270 + 60 + + bind new "user_object" to query +when successful. +bg=yellow + + + + Relation + + 2210 + 500 + 170 + 80 + + lt=.. + 10.0;10.0;150.0;60.0 + + + UMLNote + + 140 + 2020 + 270 + 60 + + binds "query_list_t" to query when +successful. +(must be destroyed) +bg=yellow + + + + Relation + + 250 + 2070 + 170 + 80 + + lt=.. + 10.0;10.0;150.0;60.0 + + + Relation + + 1500 + 500 + 170 + 80 + + lt=.. + 10.0;10.0;150.0;60.0 + + + Relation + + 3430 + 590 + 30 + 90 + + lt=-> + 10.0;10.0;10.0;70.0 + + + UMLState + + 3090 + 950 + 230 + 40 + + enter_set_password_expr + + + + UMLState + + 3160 + 1060 + 230 + 40 + + exit_grant_user_stmt + + + + Relation + + 3210 + 980 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + Relation + + 3430 + 690 + 30 + 80 + + lt=- + 10.0;60.0;10.0;10.0 + + + UMLSpecialState + + 3420 + 750 + 40 + 40 + + type=decision + + + + Relation + + 3260 + 750 + 180 + 110 + + lt=-> +grant user + 160.0;20.0;10.0;20.0;10.0;90.0 + + + Relation + + 3450 + 750 + 180 + 110 + + lt=-> +grant network + 10.0;20.0;160.0;20.0;160.0;90.0 + + + UMLState + + 3330 + 660 + 230 + 40 + + enter_access_expr + + + + Relation + + 3300 + 630 + 80 + 50 + + lt=.. + 10.0;10.0;60.0;30.0 + + + UMLNote + + 3110 + 620 + 200 + 40 + + bind children to query +bg=yellow + + + + UMLState + + 3160 + 840 + 230 + 40 + + enter_grant_user_stmt + + + + Relation + + 3120 + 780 + 120 + 80 + + lt=.. + 10.0;10.0;100.0;60.0 + + + UMLNote + + 3010 + 730 + 240 + 60 + + replace query->children with +existing "user_object" +bg=yellow + + + + Relation + + 3210 + 870 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + Relation + + 3350 + 870 + 30 + 210 + + lt=-> + 10.0;10.0;10.0;190.0 + + + UMLState + + 3580 + 950 + 230 + 40 + + enter_set_comment_expr +bg=orange + + + + UMLState + + 3490 + 1060 + 230 + 40 + + exit_grant_network_stmt +bg=orange + + + + Relation + + 3650 + 980 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + UMLState + + 3490 + 840 + 230 + 40 + + enter_grant_network_stmt +bg=orange + + + + Relation + + 3650 + 870 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + Relation + + 3540 + 870 + 30 + 210 + + lt=-> + 10.0;10.0;10.0;190.0 + + + UMLNote + + 3630 + 730 + 250 + 60 + + replace query->children with +existing "network_object" +bg=yellow + + + + Relation + + 3670 + 780 + 100 + 80 + + lt=.. + 80.0;10.0;10.0;60.0 + + + UMLState + + 3330 + 1170 + 230 + 40 + + exit_timeit_stmt + + + + Relation + + 3350 + 1090 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + Relation + + 3510 + 1090 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + Relation + + 3430 + 1200 + 30 + 80 + + lt=<<<- + 10.0;60.0;10.0;10.0 + + + Relation + + 3090 + 1300 + 260 + 90 + + lt=-> + 10.0;10.0;10.0;70.0;240.0;70.0 + + + UMLSpecialState + + 3420 + 1430 + 40 + 40 + + type=flow_final + + + + UMLState + + 3330 + 1350 + 230 + 40 + + free_query + + + + Relation + + 3430 + 1380 + 30 + 70 + + lt=<<<- + 10.0;50.0;10.0;10.0 + + + UMLState + + 3330 + 1260 + 230 + 40 + + siridb_send_query_result + + + + UMLState + + 2910 + 1270 + 230 + 40 + + siridb_query_send_error + + + + Relation + + 3210 + 1090 + 140 + 210 + + lt=<<<- + 120.0;190.0;10.0;190.0;10.0;10.0 + + + Relation + + 3550 + 1090 + 80 + 210 + + lt=<<<- + 10.0;190.0;60.0;190.0;60.0;10.0 + + + Relation + + 3430 + 1290 + 30 + 80 + + lt=<- + 10.0;60.0;10.0;10.0 + + + Relation + + 2960 + 570 + 390 + 720 + + lt=<<<- +<access denied> +<cluster offline> + 10.0;700.0;10.0;10.0;370.0;10.0 + + + Relation + + 3050 + 960 + 130 + 330 + + lt=<<<- +<illegal +new password> + + 10.0;310.0;10.0;10.0;40.0;10.0 + + + Relation + + 3010 + 850 + 170 + 440 + + lt=<<<- +<user does +not exist> + 10.0;420.0;10.0;10.0;150.0;10.0 + + + UMLNote + + 1390 + 450 + 270 + 60 + + bind existing "user_object" to +query when successful. +bg=yellow + + + + Relation + + 2960 + 850 + 940 + 740 + + lt=<<<- +<network does not exist> + 10.0;460.0;10.0;720.0;920.0;720.0;920.0;10.0;760.0;10.0 + + + Relation + + 2240 + 790 + 180 + 170 + + lt=<<<- +<error saving users> + 10.0;150.0;10.0;10.0;80.0;10.0 + + + Relation + + 3090 + 1070 + 130 + 220 + + lt=<<<- +<error saving +users> + 10.0;200.0;10.0;10.0;70.0;10.0 + + + Relation + + 3010 + 960 + 860 + 600 + + lt=<<<- +<illegal comment> + 10.0;350.0;10.0;580.0;840.0;580.0;840.0;10.0;800.0;10.0 + + + UMLState + + 4580 + 560 + 230 + 40 + + enter_revoke_stmt + + + + UMLSpecialState + + 4670 + 370 + 40 + 40 + + type=initial + + + + Relation + + 4700 + 380 + 170 + 100 + + lt=-> + 10.0;10.0;150.0;10.0;150.0;80.0 + + + Relation + + 4680 + 400 + 30 + 180 + + lt=-> + 10.0;10.0;10.0;160.0 + + + Relation + + 4800 + 490 + 70 + 110 + + lt=-> + 50.0;10.0;50.0;90.0;10.0;90.0 + + + UMLState + + 4740 + 460 + 230 + 40 + + enter_timeit_stmt + + + + UMLNote + + 4440 + 290 + 410 + 70 + + revoke statement +-- +Can be used to grant access rights to a user or network. +All servers must process this query. +bg=light_gray + + + + Relation + + 4680 + 590 + 30 + 90 + + lt=-> + 10.0;10.0;10.0;70.0 + + + UMLState + + 4410 + 940 + 230 + 40 + + exit_revoke_user_stmt + + + + Relation + + 4680 + 690 + 30 + 80 + + lt=- + 10.0;60.0;10.0;10.0 + + + UMLSpecialState + + 4670 + 750 + 40 + 40 + + type=decision + + + + Relation + + 4510 + 750 + 180 + 110 + + lt=-> +grant user + 160.0;20.0;10.0;20.0;10.0;90.0 + + + Relation + + 4700 + 750 + 180 + 110 + + lt=-> +grant network + 10.0;20.0;160.0;20.0;160.0;90.0 + + + UMLState + + 4580 + 660 + 230 + 40 + + enter_access_expr + + + + Relation + + 4550 + 630 + 80 + 50 + + lt=.. + 10.0;10.0;60.0;30.0 + + + UMLNote + + 4340 + 620 + 220 + 40 + + bind children to query +bg=yellow + + + + UMLState + + 4410 + 840 + 230 + 40 + + enter_revoke_user_stmt + + + + Relation + + 4350 + 780 + 140 + 80 + + lt=.. + 10.0;10.0;120.0;60.0 + + + UMLNote + + 4240 + 730 + 270 + 60 + + replace query->children with +existing "user_object" +bg=yellow + + + + Relation + + 4510 + 870 + 30 + 90 + + lt=-> + 10.0;10.0;10.0;70.0 + + + UMLState + + 4740 + 940 + 230 + 40 + + exit_revoke network_stmt +bg=orange + + + + UMLState + + 4740 + 840 + 230 + 40 + + enter_revoke_network_stmt +bg=orange + + + + Relation + + 4850 + 870 + 30 + 90 + + lt=-> + 10.0;10.0;10.0;70.0 + + + UMLNote + + 4870 + 730 + 270 + 60 + + replace query->children with +existing "network_object" +bg=yellow + + + + Relation + + 4920 + 780 + 90 + 80 + + lt=.. + 70.0;10.0;10.0;60.0 + + + UMLState + + 4580 + 1050 + 230 + 40 + + exit_timeit_stmt + + + + Relation + + 4600 + 970 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + Relation + + 4760 + 970 + 30 + 100 + + lt=-> + 10.0;10.0;10.0;80.0 + + + Relation + + 4680 + 1080 + 30 + 80 + + lt=<<<- + 10.0;60.0;10.0;10.0 + + + Relation + + 4340 + 1180 + 260 + 90 + + lt=-> + 10.0;10.0;10.0;70.0;240.0;70.0 + + + UMLSpecialState + + 4670 + 1320 + 40 + 40 + + type=flow_final + + + + UMLState + + 4580 + 1230 + 230 + 40 + + free_query + + + + Relation + + 4680 + 1260 + 30 + 80 + + lt=<<<- + 10.0;60.0;10.0;10.0 + + + UMLState + + 4580 + 1140 + 230 + 40 + + siridb_send_query_result + + + + UMLState + + 4160 + 1150 + 230 + 40 + + siridb_query_send_error + + + + Relation + + 4460 + 970 + 140 + 210 + + lt=<<<- + 120.0;190.0;10.0;190.0;10.0;10.0 + + + Relation + + 4800 + 970 + 80 + 210 + + lt=<<<- + 10.0;190.0;60.0;190.0;60.0;10.0 + + + Relation + + 4680 + 1170 + 30 + 80 + + lt=<- + 10.0;60.0;10.0;10.0 + + + Relation + + 4210 + 570 + 390 + 600 + + lt=<<<- +<access denied> +<cluster offline> + 10.0;580.0;10.0;10.0;370.0;10.0 + + + Relation + + 4260 + 850 + 170 + 320 + + lt=<<<- +<user does +not exist> + 10.0;300.0;10.0;10.0;150.0;10.0 + + + Relation + + 4210 + 850 + 940 + 600 + + lt=<<<- +<network does not exist> + 10.0;340.0;10.0;580.0;920.0;580.0;920.0;10.0;760.0;10.0 + + + Relation + + 4340 + 950 + 130 + 220 + + lt=<<<- +<error saving +users> + 10.0;200.0;10.0;10.0;70.0;10.0 + + + Relation + + 3050 + 1070 + 790 + 460 + + lt=<<<- +<error saving networks> + 10.0;240.0;10.0;440.0;770.0;440.0;770.0;10.0;670.0;10.0 + + + Relation + + 4260 + 950 + 830 + 470 + + lt=<<<- +<error saving networks> + 10.0;240.0;10.0;450.0;810.0;450.0;810.0;10.0;710.0;10.0 + + + UMLNote + + 2560 + 720 + 150 + 50 + + reset free call +when successful. +bg=yellow + + + + Relation + + 2520 + 760 + 100 + 40 + + lt=.. + 80.0;10.0;10.0;20.0 + + + Relation + + 380 + 3380 + 170 + 100 + + lt=-> +group=2 + 10.0;10.0;150.0;10.0;150.0;80.0 + + + Relation + + 360 + 3400 + 30 + 180 + + lt=-> +group=2 + 10.0;10.0;10.0;160.0 + + + Relation + + 480 + 3490 + 70 + 110 + + lt=-> +group=2 + 50.0;10.0;50.0;90.0;10.0;90.0 + + + UMLState + + 420 + 3460 + 230 + 40 + + enter_timeit_stmt +group=2 + + + + UMLSpecialState + + 350 + 3370 + 40 + 40 + + type=initial +group=2 + + + + Relation + + 390 + 3590 + 30 + 90 + + lt=-> + + 10.0;10.0;10.0;70.0 + + + Relation + + 390 + 3690 + 30 + 90 + + lt=-> + 10.0;10.0;10.0;70.0 + + + Relation + + 290 + 3590 + 30 + 190 + + lt=-> + + 10.0;10.0;10.0;170.0 + + + Relation + + 480 + 3870 + 70 + 90 + + lt=<<<- + 10.0;70.0;50.0;70.0;50.0;10.0 + + + UMLState + + 260 + 4010 + 230 + 40 + + query_count_free + + + + Relation + + 360 + 3950 + 30 + 80 + + lt=-> + 10.0;10.0;10.0;60.0 + + + Relation + + 130 + 3950 + 150 + 100 + + lt=-> + 10.0;10.0;10.0;80.0;130.0;80.0 + + + UMLSpecialState + + 350 + 4200 + 40 + 40 + + type=flow_final + + + + UMLState + + 260 + 4100 + 230 + 40 + + free_query + + + + Relation + + 360 + 4040 + 30 + 80 + + lt=<<<- + 10.0;60.0;10.0;10.0 + + + Relation + + 360 + 4130 + 30 + 90 + + lt=<<<- + 10.0;70.0;10.0;10.0 + + + Relation + + 70 + 3950 + 210 + 190 + + lt=-> +fg=blue + 10.0;10.0;10.0;170.0;190.0;170.0 + + + Relation + + 440 + 3790 + 110 + 70 + + lt=-> + 10.0;10.0;10.0;30.0;90.0;30.0;90.0;50.0 + + + Relation + + 360 + 3790 + 30 + 150 + + lt=<<<- + 10.0;130.0;10.0;10.0 + + + Relation + + 70 + 3570 + 210 + 370 + + lt=<<<- +<access denied> +fg=blue + 10.0;350.0;10.0;10.0;190.0;10.0 + + + UMLNote + + 130 + 3290 + 400 + 70 + + count users statement +-- +This statement will be answered by the master only. + +bg=light_gray + + + + UMLState + + 260 + 3920 + 230 + 40 + + siridb_send_query_result + + + + UMLState + + 420 + 3840 + 230 + 40 + + exit_timeit_stmt + + + + UMLState + + 0 + 3920 + 230 + 40 + + siridb_query_send_error + + + + UMLState + + 260 + 3760 + 230 + 40 + + exit_count_users_stmt +bg=orange + + + + UMLState + + 370 + 3660 + 230 + 40 + + enter_where_xxx_stmt +bg=orange + + + + UMLState + + 260 + 3560 + 230 + 40 + + enter_count_stmt + + + + UMLNote + + 60 + 3450 + 270 + 60 + + binds "query_count_t" to query when +successful. +(must be destroyed) +bg=yellow + + + + Relation + + 170 + 3500 + 170 + 80 + + lt=.. + 10.0;10.0;150.0;60.0 + + + Relation + + 130 + 3770 + 150 + 170 + + lt=<<<- + 10.0;150.0;10.0;10.0;130.0;10.0 + + diff --git a/docs/uml/siridb_class_diagram.uxf b/docs/uml/siridb_class_diagram.uxf new file mode 100644 index 00000000..84a60a57 --- /dev/null +++ b/docs/uml/siridb_class_diagram.uxf @@ -0,0 +1,1168 @@ + + + // Uncomment the following line to change the fontsize and font: +fontsize=13 +fontfamily=Monospaced //possible: SansSerif,Serif, + + +////////////////////////////////////////////////////////////////////////////////////////////// +// Welcome to UMLet! +// +// Double-click on elements to add them to the diagram, or to copy them +// Edit elements by modifying the text in this panel +// Hold Ctrl to select multiple elements +// Use Ctrl+mouse to select via lasso +// +// Use +/- or Ctrl+mouse wheel to zoom +// Drag a whole relation at its central square icon +// +// Press Ctrl+C to copy the whole diagram to the system clipboard (then just paste it to, eg, Word) +// Edit the files in the "palettes" directory to create your own element palettes +// +// Select "Custom Elements > New..." to create new element types +////////////////////////////////////////////////////////////////////////////////////////////// + + +// This text will be stored with each diagram; use it for notes. + 8 + + UMLClass + + 448 + 712 + 200 + 216 + + siri_t +-- +args: *siri_args_t +backup: *uv_timer_t +cfg: *siri_cfg_t +fh: *siri_fh_t +grammar: *cleri_grammar_t +heartbeat: *uv_timer_t +loop: * uv_loop_t +optimize: *siri_optimize_t +siridb_list: *llist_t +siridb_mutex: uv_mutex_t +startup_time: uint32_t +status: siri_status_t +-- +siri_start(): int +siri_free(): void +siri_setup_logger(): void + + + + UMLClass + + 752 + 712 + 224 + 632 + + siridb_t +-- +active_tasks: uint16_t +buffer_fp: *FILE +buffer_len: size_t +buffer_path: * char +buffer_size: size_t +dbname: * char +dbpath: * char +drop_threshold: double +dropped_fp: *FILE +duration_log: uint64_t +duration_num: uint64_t +fifo: *siridb_fifo_t +flags: uint8_t +groups: *siridb_groups_t +index_size: size_t +insert_tasks: uint16_t +max_series_id: uint32_t +pools: *siridb_pools_t +received_points: size_t +ref: uint16_t +reindex: *siridb_reindex_t +replica: * siridb_server_t +replicate: *siridb_replicate_t +series: *ct_t +series_map: *imap_t +series_mutex: uv_mutex_t +server: * siridb_server_t +servers: *llist_t +shard_mask_log: uint16_t +shard_mask_num: uint16_t +shards: *imap_t +shards_mutex: uv_mutex_t +start_ts: time_t +store: *qp_fpacker_t +time: * siridb_time_t +tz: iso8601_tz_t +users: *llist_t +uuid: uuid_t +-- +siridb__free(): void +siridb_decref(): void +siridb_decref_cb(): void +siridb_from_unpacker(): int +siridb_get(): *siridb_t +siridb_incref(): void +siridb_is_db_path(): int +siridb_is_reindexing(): int +siridb_new(): *siridb_t +siridb_open_files(): int +siridb_save(): int + + + + + Relation + + 640 + 816 + 128 + 32 + + lt=<<<<<- +m1=1 +m2=0..* + 10.0;10.0;140.0;10.0 + + + UMLClass + + 1048 + 712 + 296 + 192 + + lt=. +servers +-- +siridb_servers_available(): int +siridb_servers_by_name(): *siridb_server_t +siridb_servers_by_uuid(): *siridb_server_t +siridb_servers_free(): void +siridb_servers_get_file(): ssize_t +siridb_servers_list(): int +siridb_servers_load(): int +siridb_servers_online(): int +siridb_servers_other2vec(): *vec_t +siridb_servers_register(): int +siridb_servers_save(): int +siridb_servers_send_flags(): void +siridb_servers_send_pkg(): void + + + + UMLClass + + 1432 + 408 + 288 + 560 + + server_t +-- +address: *char +buffer_path: *char +buffer_size: size_t +dbpath: *char +flags: uint8_t +id: uint8_t +ip_support: uint8_t +libuv: *char +name: *char +pid: uint16_t +pool: uint16_t +port: uint16_t +promises: *imap_t +ref: uint16_t +socket: *uv_tcp_t +startup_time: uint32_t +uuid: uuid_t +version: *char +-- +siridb__server_free(): void +siridb_server_cexpr_cb(): int +siridb_server_cmp(): int +siridb_server_connect(): void +siridb_server_decref(): void +siridb_server_drop(): int +siridb_server_from_node(): *siridb_server_t +siridb_server_incref(): void +siridb_server_is_accessible(): int +siridb_server_is_available(): int +siridb_server_is_connected(): int +siridb_server_is_online(): int +siridb_server_is_remote_prop(): int +siridb_server_is_synchronizing(): int +siridb_server_new(): *siridb_server_t +siridb_server_register(): *siridb_server_t +siridb_server_self_accessible(): int +siridb_server_self_available(): int +siridb_server_self_online(): int +siridb_server_self_synchronizing(): int +siridb_server_send_flags(): void +siridb_server_send_pkg(): int +siridb_server_str_status(): *char +siridb_server_update_address(): int +siridb_server_update_flags(): void + + + + + Relation + + 968 + 920 + 480 + 32 + + lt=<<<<<- +m1=1 +m2=1..* + 10.0;10.0;580.0;10.0 + + + Relation + + 968 + 800 + 96 + 24 + + lt=. + 10.0;10.0;100.0;10.0 + + + Relation + + 1336 + 800 + 112 + 24 + + lt=. + 120.0;10.0;10.0;10.0 + + + UMLClass + + 504 + 544 + 200 + 88 + + iso8601_tz_t +-- +tz: iso8601_tz_t +-- +iso8601_tz(): iso8601_tz_t +iso8601_tzname(): const *char +iso8601_parse_date(): int64_t + + + + + UMLClass + + 448 + 992 + 200 + 112 + + siri_fh_t +-- +size: uint16_t +idx: uint16_t +fpointers: **siri_fp_t +-- +siri_fh_new(): *siri_fh_t +siri_fh_free(): void +siri_fopen(): int + + + + + UMLClass + + 448 + 1176 + 200 + 88 + + siri_fp_t +-- +fp: *FILE +ref: uint8_t +-- +siri_fp_new(): *siri_fp_t +siri_fp_decref(): void + + + + Relation + + 536 + 920 + 24 + 88 + + lt=<<<<<- +m1=1 +m2=1 + 10.0;10.0;10.0;90.0 + + + Relation + + 536 + 1096 + 64 + 96 + + lt=<<<<<- +m1=1 +m2=0..size + 10.0;10.0;10.0;100.0 + + + UMLClass + + 736 + 1528 + 288 + 352 + + siridb_shard_t +-- +flags: uint8_t +fn: *char +fp: *siri_fp_t +id: uint64_t +max_chunk_sz: uint16_t +ref: uint32_t +replacing: *siridb_shard_t +tp: uint8_t +-- +siridb__shard_decref(): void +siridb__shard_free(): void +siridb_shard_cexpr_cb(): int +siridb_shard_create(): *siridb_shard_t +siridb_shard_decref(): void +siridb_shard_drop(): void +siridb_shard_get_points_log32(): int +siridb_shard_get_points_log64(): int +siridb_shard_get_points_num32(): int +siridb_shard_get_points_num64(): int +siridb_shard_get_size(): ssize_t +siridb_shard_incref(): void +siridb_shard_load(): int +siridb_shard_optimize(): int +siridb_shard_remove(): int +siridb_shard_status(): void +siridb_shard_write_flags(): int +siridb_shard_write_points(): long int + + + + UMLClass + + 784 + 1408 + 256 + 56 + + lt=. +shards +-- +siridb_shards_add_points(): int +siridb_shards_load(): int + + + + Relation + + 872 + 1336 + 24 + 88 + + lt=. + 10.0;10.0;10.0;90.0 + + + Relation + + 872 + 1456 + 24 + 88 + + lt=. + 10.0;10.0;10.0;90.0 + + + Relation + + 760 + 1336 + 48 + 208 + + lt=<<<<<- +m1=1 +m2=0..* + 10.0;10.0;10.0;240.0 + + + Relation + + 640 + 1024 + 112 + 584 + + lt=<- + + 10.0;10.0;90.0;10.0;90.0;710.0;120.0;710.0 + + + Relation + + 536 + 1256 + 216 + 440 + + lt=<<<<- +m1=1 +m2=1 + 250.0;520.0;10.0;520.0;10.0;10.0 + + + UMLClass + + 1104 + 1048 + 296 + 488 + + siridb_series_t +-- +buffer: *siridb_buffer_t +end: uint64_t +flags: uint8_t +id: uint32_t +idx: *idx_t +idx_len: uint32_t +length: uint32_t +mask: uint16_t +name: *char +name_len: uint16_t +pool: uint16_t +ref: uint32_t +start: uint64_t +tp: uint8_t +-- +siridb__series_decref(): void +siridb__series_free(): void +siridb_series_add_idx(): int +siridb_series_add_pcache(): int +siridb_series_add_point(): int +siridb_series_cexpr_cb(): int +siridb_series_decref(): void +siridb_series_drop(): int +siridb_series_drop_commit(): int +siridb_series_drop_prepare(): void +siridb_series_flush_dropped(): int +siridb_series_get_points(): *siridb_points_t +siridb_series_incref(): void +siridb_series_isnum(): int +siridb_series_load(): int +siridb_series_new(): *siridb_series_t +siridb_series_open_store(): int +siridb_series_optimize_shard(): int +siridb_series_remove_shard(): void +siridb_series_replicate_file(): int +siridb_series_server_id(): int +siridb_series_server_id_by_name(): uint8_t +siridb_series_update_props(): void + + + + Relation + + 968 + 1096 + 152 + 32 + + lt=<<<<<- +m1=1 +m2=0..* + 10.0;10.0;170.0;10.0 + + + UMLClass + + 1104 + 1608 + 296 + 128 + + idx_t +-- +end_ts: uint64_t +len: uint16_t +log_sz: uint16_t +pos: uint32_t +shard: *siridb_shard_t +start_ts: uint64_t +-- +/functions can be found in/ +/siridb_series_t class/ + + + + Relation + + 1248 + 1528 + 56 + 96 + + lt=<<<<<- +m1=1 +m2=0..len + 10.0;10.0;10.0;100.0 + + + Relation + + 1016 + 1664 + 104 + 32 + + lt=<<<<- +m1=0..* +m2=1 + 110.0;10.0;10.0;10.0 + + + UMLClass + + 1464 + 992 + 256 + 280 + + siridb_groups_t +-- +flags: uint8_t +fn: *char +groups: *ct_t +mutex: uv_mutex_t +ngroups: *vec_t +nseries: *vec_t +ref: uint8_t +status: uint8_t +work: uv_work_t +-- +siridb_groups_add_group(): int +siridb_groups_add_series(): void +siridb_groups_decref(): void +siridb_groups_destroy(): void +siridb_groups_drop_group(): int +siridb_groups_get_file(): ssize_t +siridb_groups_init_nseries(): void +siridb_groups_new(): *siridb_groups_t +siridb_groups_pkg(): *sirinet_pkg_t +siridb_groups_save(): int +siridb_groups_start(): void + + + + Relation + + 968 + 1016 + 512 + 32 + + lt=<<<<<- +m1=1 +m2=1 + 10.0;10.0;620.0;10.0 + + + UMLClass + + 1464 + 1352 + 256 + 280 + + siridb_group_t +-- +flags: uint16_t +n: uint32_t +name: *char +ref: uint16_t +regex: *pcre +regex_extra: *pcre_extra +series: *vec_t +source: *char +-- +siridb__group_decref(): void +siridb__group_free(): void +siridb_group_cexpr_cb(): int +siridb_group_cleanup(): void +siridb_group_decref(): void +siridb_group_incref(): void +siridb_group_is_remote_prop(): int +siridb_group_new(): *siridb_group_t +siridb_group_prop(): void +siridb_group_set_name(): int +siridb_group_test_series(): int +siridb_group_update_expression(): int + + + + Relation + + 1576 + 1264 + 48 + 104 + + lt=<<<<<- +m1=1 +m2=0..* + 10.0;10.0;10.0;110.0 + + + Relation + + 1392 + 1304 + 168 + 64 + + lt=<<<<- +m1=0..* +m2=0..* + 160.0;60.0;160.0;10.0;10.0;10.0 + + + UMLClass + + 120 + 712 + 200 + 144 + + cfg_t +-- +default_db_path[]: char +heartbeat_interval: uint16_t +ip_support: uint8_t +listen_backend_port: uint16_t +listen_client_port: uint16_t +max_open_files: uint16_t +optimize_interval: uint32_t +server_address[]: char +-- +siri_cfg_init(): void + + + + + Relation + + 312 + 760 + 152 + 40 + + lt=-() +m2=cfg file + + 170.0;20.0;10.0;20.0 + + + Relation + + 600 + 624 + 184 + 104 + + lt=-() +m2=tz translation + + 210.0;110.0;210.0;60.0;10.0;60.0;10.0;10.0 + + + UMLClass + + 1096 + 456 + 248 + 216 + + siridb_fifo_t +-- +path: *char +fifos: *llist_t +in: *siridb_ffile_t +out: *siridb_ffile_t +max_id: ssize_t +-- +siridb_fifo_append(): int +siridb_fifo_close(): int +siridb_fifo_commit(): int +siridb_fifo_commit_err(): int +siridb_fifo_free(): void +siridb_fifo_has_data(): uint32_t +siridb_fifo_is_open(): int +siridb_fifo_new(): *siridb_fifo_t +siridb_fifo_open(): int +siridb_fifo_pop(): *sirinet_pkg_t + + + + + Relation + + 944 + 640 + 168 + 88 + + lt=<<<<<- +m1=1 +m2=0..1 + 10.0;90.0;10.0;10.0;190.0;10.0 + + + UMLClass + + 120 + 920 + 200 + 96 + + args_t +-- +config[]: char +log_colorized: int32_t +log_level[]: char +version: int32_t +-- +siri_args_parse(): void + + + + + Relation + + 208 + 848 + 56 + 88 + + lt=<. +config + 10.0;10.0;10.0;90.0 + + + Relation + + 312 + 856 + 152 + 128 + + lt=-() +m2=startup arguments + + 170.0;10.0;90.0;10.0;90.0;130.0;10.0;130.0 + + + UMLClass + + 1808 + 832 + 280 + 192 + + siridb_pools_t +-- +len: uint16_t +pool: *siridb_pool_t +lookup: *siridb_lookup_t +prev_lookup: *siridb_lookup_t +-- +siridb_pools_accessible(): int +siridb_pools_append(): *siridb_pool_t +siridb_pools_available(): int +siridb_pools_free(): void +siridb_pools_gen_lookup(): *siridb_lookup_t +siridb_pools_init(): void +siridb_pools_online(): int +siridb_pools_send_pkg(): void +siridb_pools_send_pkg_2some(): void + + + + + Relation + + 968 + 968 + 856 + 32 + + lt=<<<<<- +m1=1 +m2=1 + 10.0;10.0;1050.0;10.0 + + + UMLClass + + 1808 + 576 + 280 + 192 + + siridb_pool_t +-- +len: uint16_t +server[2]: *siridb_server_t +-- +siridb_pool_accessible(): int +siridb_pool_add_server(): void +siridb_pool_available(): int +siridb_pool_cexpr_cb(): int +siridb_pool_online(): int +siridb_pool_send_pkg(): int + + + + + Relation + + 1944 + 760 + 48 + 88 + + lt=<<<<<- +m1=1 +m2=1..* + 10.0;90.0;10.0;10.0 + + + Relation + + 1712 + 664 + 112 + 32 + + lt=<<<<- +m1=1 +m2=1..len + 120.0;10.0;10.0;10.0 + + + UMLClass + + 1096 + 160 + 248 + 216 + + siridb_ffile_t +-- +fd: int +fn: *char +fp: *FILE +free_space: uint32_t +id: uint64_t +next_size: uint32_t +size: long int +-- +siridb_ffile_append(): siridb_ffile_result_t +siridb_ffile_check_fn(): int +siridb_ffile_free(): void +siridb_ffile_new(): *siridb_ffile_t +siridb_ffile_open(): void +siridb_ffile_pop(): *sirinet_pkg_t +siridb_ffile_pop_commit(): int +siridb_ffile_unlink(): void + + + + Relation + + 1224 + 368 + 48 + 104 + + lt=<<<<<- +m1=1 +m2=1..* + 10.0;110.0;10.0;10.0 + + + UMLClass + + 808 + 456 + 256 + 120 + + lt=. +users +-- +siridb_users_add_user(): int +siridb_users_drop_user(): int +siridb_users_free(): void +siridb_users_get_file(): ssize_t +siridb_users_get_user(): *siridb_user_t +siridb_users_load(): int +siridb_users_save(): *int + + + + UMLClass + + 744 + 184 + 232 + 192 + + siridb_user_t +-- +ref: uint16_t +access_bit: uint32_t +name: *char +password: *char +-- +siridb_user_new(): *siridb_user_t +siridb_user_prop(): void +siridb_user_set_name(): int +siridb_user_set_password(): int +siridb_user_check_access(): int +siridb__user_free(): void +siridb_user_cexpr_cb(): int +siridb_user_incref(): void +siridb_user_decref(): void + + + + Relation + + 776 + 368 + 48 + 360 + + lt=<<<<<- +m1=1 +m2=0..* + 10.0;430.0;10.0;10.0 + + + Relation + + 856 + 568 + 24 + 160 + + lt=. + 10.0;180.0;10.0;10.0 + + + Relation + + 856 + 368 + 24 + 104 + + lt=. + 10.0;110.0;10.0;10.0 + + + UMLClass + + 1432 + 104 + 288 + 232 + + sirinet_socket_t +-- +buf: *char +len: size_t +on_data: on_data_cb_t +origin: *void +ref: uint32_t +siridb: *siridb_t +tcp: uv_tcp_t +tp: sirinet_socket_tp_t +-- +sirinet__socket_free(): void +sirinet_addr_and_port(): int +sirinet_socket_alloc_buffer(): void +sirinet_socket_decref(): void +sirinet_socket_incref(): void +sirinet_socket_ip_support_str(): const *char +sirinet_socket_new(): *uv_tcp_t +sirinet_socket_on_data(): void + + + + + Relation + + 1576 + 328 + 24 + 96 + + lt=<<<<->>>> +m2=1 + + 10.0;100.0;10.0;10.0 + + + Relation + + 968 + 128 + 480 + 128 + + lt=<<<<- +m1=0..origin +m2=0..* + + 10.0;130.0;90.0;130.0;90.0;10.0;580.0;10.0 + + + UMLClass + + 120 + 544 + 200 + 88 + + lt=. +clserver +-- +sirinet_clserver_init(): int +-- +/responsible for client / +/connections and requests/ + + + + UMLClass + + 120 + 416 + 200 + 88 + + lt=. +bserver +-- +sirinet_bserver_init(): int +-- +/responsible for server / +/connections and requests/ + + + + Relation + + 312 + 32 + 1296 + 456 + + lt=<<<<<- +m1=1 +m2=1..* + 10.0;540.0;90.0;540.0;90.0;10.0;1570.0;10.0;1570.0;90.0 + + + Relation + + 312 + 48 + 1232 + 568 + + lt=<<<<<- +m1=1 +m2=1..* + 10.0;680.0;110.0;680.0;110.0;10.0;1490.0;10.0;1490.0;70.0 + + + Relation + + 72 + 584 + 64 + 192 + + lt=<. +config + 60.0;10.0;10.0;10.0;10.0;220.0;60.0;220.0 + + + Relation + + 32 + 448 + 104 + 368 + + lt=<. +config + 110.0;10.0;10.0;10.0;10.0;440.0;110.0;440.0 + + + Relation + + 312 + 608 + 200 + 120 + + lt=<<<<<- + 230.0;130.0;230.0;90.0;40.0;90.0;40.0;10.0;10.0;10.0 + + + Relation + + 312 + 480 + 216 + 248 + + lt=<<<<<- + 250.0;290.0;250.0;230.0;60.0;230.0;60.0;10.0;10.0;10.0 + + diff --git a/docs/uml/siridb_parser.uxf b/docs/uml/siridb_parser.uxf new file mode 100644 index 00000000..6d271a9e --- /dev/null +++ b/docs/uml/siridb_parser.uxf @@ -0,0 +1,182 @@ + + + 10 + + UMLSpecialState + + 810 + 60 + 40 + 40 + + type=initial + + + + UMLState + + 720 + 190 + 230 + 40 + + enter_alter_stmt + + + + Relation + + 820 + 90 + 30 + 120 + + lt=-> + 10.0;10.0;10.0;100.0 + + + UMLState + + 320 + 770 + 230 + 40 + + siridb_query_send_error + + + + Relation + + 410 + 200 + 330 + 590 + + lt=<<<- +<no access> + 10.0;570.0;10.0;10.0;310.0;10.0 + + + UMLState + + 720 + 360 + 230 + 40 + + enter_alter_group + + + + UMLState + + 980 + 360 + 230 + 40 + + enter_alter_user + + + + UMLState + + 1240 + 360 + 230 + 40 + + enter_alter_server + + + + UMLState + + 1490 + 360 + 230 + 40 + + enter_alter_servers + + + + UMLState + + 1740 + 360 + 230 + 40 + + exit_set_drop_threshold + + + + UMLState + + 1990 + 360 + 230 + 40 + + exit_set_timezone + + + + UMLState + + 720 + 470 + 230 + 40 + + enter_set_expression + + + + UMLState + + 860 + 610 + 230 + 40 + + enter_set_name + + + + UMLState + + 970 + 1170 + 230 + 40 + + exit_timeit_stmt + + + + UMLNote + + 620 + 120 + 160 + 30 + + bind <q_alter> +bg=yellow + + + + Relation + + 710 + 140 + 80 + 70 + + lt=.. + 10.0;10.0;60.0;50.0 + + diff --git a/grammar/export_grammar.py b/grammar/export_grammar.py new file mode 100755 index 00000000..f4c1996b --- /dev/null +++ b/grammar/export_grammar.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python +'''Export python grammar to C grammar files + +Author: Jeroen van der Heijden (Cesbit) +Date: 2016-10-10 +''' +import sys +import os +from grammar import siri_grammar +from pyleri import Grammar + + +if __name__ == '__main__': + c_file, h_file = siri_grammar.export_c(target='siri/grammar/grammar') + + EXPORT_PATH = 'cgrammar' + + try: + os.makedirs(EXPORT_PATH) + except FileExistsError: + pass + + with open(os.path.join(EXPORT_PATH, 'grammar.c'), + 'w', + encoding='utf-8') as f: + f.write(c_file) + with open(os.path.join(EXPORT_PATH, 'grammar.h'), + 'w', + encoding='utf-8') as f: + f.write(h_file) + + print('\nFinished creating new c-grammar files...\n') + + EXPORT_PATH = 'jsgrammar' + + try: + os.makedirs(EXPORT_PATH) + except FileExistsError: + pass + + js_file = siri_grammar.export_js(js_template=Grammar.JS_WINDOW_TEMPLATE) + + with open(os.path.join(EXPORT_PATH, 'grammar.js'), + 'w', + encoding='utf-8') as f: + f.write(js_file) + + js_es6_file = siri_grammar.export_js() + + with open(os.path.join(EXPORT_PATH, 'SiriGrammar.js'), + 'w', + encoding='utf-8') as f: + f.write(js_es6_file) + + print('\nFinished creating new js-grammar files...\n') + + py_file = siri_grammar.export_py() + + EXPORT_PATH = 'pygrammar' + + try: + os.makedirs(EXPORT_PATH) + except FileExistsError: + pass + + with open(os.path.join(EXPORT_PATH, 'grammar.py'), + 'w', + encoding='utf-8') as f: + f.write(py_file) + + print('\nFinished creating new py-grammar file...\n') + + go_file = siri_grammar.export_go() + + EXPORT_PATH = 'gogrammar' + + try: + os.makedirs(EXPORT_PATH) + except FileExistsError: + pass + + with open(os.path.join(EXPORT_PATH, 'grammar.go'), + 'w', + encoding='utf-8') as f: + f.write(go_file) + + print('\nFinished creating new go-grammar file...\n') + + java_file = siri_grammar.export_java() + + EXPORT_PATH = 'javagrammar' + + try: + os.makedirs(EXPORT_PATH) + except FileExistsError: + pass + + with open(os.path.join(EXPORT_PATH, 'SiriGrammar.java'), + 'w', + encoding='utf-8') as f: + f.write(java_file) + + print('\nFinished creating new java-grammar file...\n') diff --git a/grammar/grammar.py b/grammar/grammar.py new file mode 100644 index 00000000..fa705c94 --- /dev/null +++ b/grammar/grammar.py @@ -0,0 +1,947 @@ +import logging +import re +from siridbhelp import help_structure +from pyleri import Choice +from pyleri import Grammar +from pyleri import Keyword +from pyleri import List +from pyleri import Optional +from pyleri import Prio +from pyleri import Ref +from pyleri import Regex +from pyleri import Repeat +from pyleri import Sequence +from pyleri import THIS +from pyleri import Token +from pyleri import Tokens + + +class SiriGrammar(Grammar): + ''' + SiriDB grammar. + + Note: choices can be optimized using most_greedy=False when there + is a preferable order in choices. + This only should be used when there's no conflict in making a + decision by the parser. (e.g. two choices should start with the + same keyword because in that case we should usually take the most + greedy one) + ''' + + RE_KEYWORDS = re.compile('[a-z_]+') + + # Regular expressions + r_float = Regex(r'[-+]?[0-9]*\.?[0-9]+') + r_integer = Regex('[-+]?[0-9]+') + r_uinteger = Regex('[0-9]+') + r_time_str = Regex('[0-9]+[smhdw]') + r_singleq_str = Regex('(?:\'(?:[^\']*)\')+') + r_doubleq_str = Regex('(?:"(?:[^"]*)")+') + r_grave_str = Regex('(?:`(?:[^`]*)`)+') + r_uuid_str = Regex( + r'[0-9a-f]{8}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{12}') + # we only allow an optional 'i' for case-insensitive regex + r_regex = Regex('(/[^/\\\\]*(?:\\\\.[^/\\\\]*)*/i?)') + r_comment = Regex('#.*') + + # Keywords + k_access = Keyword('access') + k_active_handles = Keyword('active_handles') + k_active_tasks = Keyword('active_tasks') + k_address = Keyword('address') + k_after = Keyword('after') + k_all = Keyword('all') + k_alter = Keyword('alter') + k_and = Keyword('and') + k_as = Keyword('as') + k_backup_mode = Keyword('backup_mode') + k_before = Keyword('before') + k_between = Keyword('between') + k_buffer_path = Keyword('buffer_path') + k_buffer_size = Keyword('buffer_size') + k_count = Keyword('count') + k_create = Keyword('create') + k_critical = Keyword('critical') + k_database = Keyword('database') + k_dbname = Keyword('dbname') + k_dbpath = Keyword('dbpath') + k_debug = Keyword('debug') + k_derivative = Keyword('derivative') + k_difference = Keyword('difference') + k_drop = Keyword('drop') + k_drop_threshold = Keyword('drop_threshold') + k_duration_log = Keyword('duration_log') + k_duration_num = Keyword('duration_num') + k_end = Keyword('end') + k_error = Keyword('error') + k_expiration_log = Keyword('expiration_log') + k_expiration_num = Keyword('expiration_num') + k_expression = Keyword('expression') + k_false = Keyword('false') + k_fifo_files = Keyword('fifo_files') + k_filter = Keyword('filter') + k_first = Keyword('first') + k_float = Keyword('float') + k_for = Keyword('for') + k_from = Keyword('from') + k_full = Keyword('full') + k_grant = Keyword('grant') + k_group = Keyword('group') + k_groups = Keyword('groups') + k_head = Keyword('head') + k_help = Choice(Keyword('help'), Token('?')) + k_idle_percentage = Keyword('idle_percentage') + k_idle_time = Keyword('idle_time') + k_inf = Keyword('inf') + k_info = Keyword('info') + k_ignore_threshold = Keyword('ignore_threshold') + k_insert = Keyword('insert') + k_integer = Keyword('integer') + k_intersection = Choice( + Token('&'), + Keyword('intersection'), + most_greedy=False) + k_interval = Keyword('interval') + k_ip_support = Keyword('ip_support') + k_last = Keyword('last') + k_length = Keyword('length') + k_libuv = Keyword('libuv') + k_limit = Keyword('limit') + k_list = Keyword('list') + k_list_limit = Keyword('list_limit') + k_log = Keyword('log') + k_log_level = Keyword('log_level') + k_max = Keyword('max') + k_max_open_files = Keyword('max_open_files') + k_mean = Keyword('mean') + k_median = Keyword('median') + k_median_high = Keyword('median_high') + k_median_low = Keyword('median_low') + k_mem_usage = Keyword('mem_usage') + k_merge = Keyword('merge') + k_min = Keyword('min') + k_modify = Keyword('modify') + k_name = Keyword('name') + k_nan = Keyword('nan') + k_ninf = Sequence('-', k_inf) + k_now = Keyword('now') + k_number = Keyword('number') + k_offset = Keyword('offset') + k_online = Keyword('online') + k_open_files = Keyword('open_files') + k_or = Keyword('or') + k_password = Keyword('password') + k_points = Keyword('points') + k_pool = Keyword('pool') + k_pools = Keyword('pools') + k_port = Keyword('port') + k_prefix = Keyword('prefix') + k_pvariance = Keyword('pvariance') + k_read = Keyword('read') + k_received_points = Keyword('received_points') + k_reindex_progress = Keyword('reindex_progress') + k_revoke = Keyword('revoke') + k_select = Keyword('select') + k_select_points_limit = Keyword('select_points_limit') + k_selected_points = Keyword('selected_points') + k_series = Keyword('series') + k_server = Keyword('server') + k_servers = Keyword('servers') + k_set = Keyword('set') + k_shard_duration = Keyword('shard_duration') + k_shards = Keyword('shards') + k_show = Keyword('show') + k_sid = Keyword('sid') + k_size = Keyword('size') + k_start = Keyword('start') + k_startup_time = Keyword('startup_time') + k_status = Keyword('status') + k_stddev = Keyword('stddev') + k_string = Keyword('string') + k_suffix = Keyword('suffix') + k_sum = Keyword('sum') + k_symmetric_difference = Choice( + Token('^'), + Keyword('symmetric_difference'), + most_greedy=False) + k_sync_progress = Keyword('sync_progress') + k_tag = Keyword('tag') + k_tags = Keyword('tags') + k_tail = Keyword('tail') + k_tee = Keyword('tee') + k_time_precision = Keyword('time_precision') + k_timeit = Keyword('timeit') + k_timeval = Keyword('timeval') + k_timezone = Keyword('timezone') + k_to = Keyword('to') + k_true = Keyword('true') + k_type = Keyword('type') + k_union = Choice( + Tokens(', |'), + Keyword('union'), + most_greedy=False) + k_untag = Keyword('untag') + k_uptime = Keyword('uptime') + k_user = Keyword('user') + k_users = Keyword('users') + k_using = Keyword('using') + k_uuid = Keyword('uuid') + k_variance = Keyword('variance') + k_version = Keyword('version') + k_warning = Keyword('warning') + k_where = Keyword('where') + k_who_am_i = Keyword('who_am_i') + k_write = Keyword('write') + c_difference = Choice( + Token('-'), + k_difference, + most_greedy=False) + + access_keywords = Choice( + k_read, + k_write, + k_modify, + k_full, + k_select, + k_show, + k_list, + k_count, + k_create, + k_insert, + k_drop, + k_grant, + k_revoke, + k_alter, + most_greedy=False) + + _boolean = Choice(k_true, k_false, most_greedy=False) + + log_keywords = Choice( + k_debug, + k_info, + k_warning, + k_error, + k_critical, + most_greedy=False) + + int_expr = Prio( + r_integer, + Sequence('(', THIS, ')'), + Sequence(THIS, Tokens('+ - * % /'), THIS)) + + string = Choice(r_singleq_str, r_doubleq_str, most_greedy=False) + + time_expr = Prio( + r_time_str, + k_now, + string, + r_integer, + Sequence('(', THIS, ')'), + Sequence(THIS, Tokens('+ - * % /'), THIS)) + + series_columns = List(Choice( + k_name, + k_type, + k_length, + k_start, + k_end, + k_shard_duration, + k_pool, + most_greedy=False), ',', 1) + + shard_columns = List(Choice( + k_sid, + k_pool, + k_server, + k_size, + k_start, + k_end, + k_type, + k_status, + most_greedy=False), ',', 1) + + server_columns = List(Choice( + # Local properties + k_address, + k_buffer_path, + k_buffer_size, + k_dbpath, + k_ip_support, + k_libuv, + k_name, + k_port, + k_uuid, + k_pool, + k_version, + k_online, + k_startup_time, + k_status, + # Remote properties + k_active_handles, + k_active_tasks, + k_fifo_files, + k_idle_percentage, + k_idle_time, + k_log_level, + k_max_open_files, + k_mem_usage, + k_open_files, + k_received_points, + k_reindex_progress, + k_selected_points, + k_sync_progress, + k_uptime, + most_greedy=False), ',', 1) + + group_columns = List(Choice( + k_expression, + k_name, + k_series, + most_greedy=False), ',', 1) + + user_columns = List(Choice( + k_name, + k_access, + most_greedy=False), ',', 1) + + tag_columns = List(Choice( + k_name, + k_series, + most_greedy=False), ',', 1) + + pool_props = Choice( + k_pool, + k_servers, + k_series, + most_greedy=False) + pool_columns = List(pool_props, ',', 1) + + bool_operator = Tokens('== !=') + int_operator = Tokens('< > == != <= >=') + str_operator = Tokens('< > == != <= >= ~ !~') + + # where group + where_group = Sequence(k_where, Prio( + Sequence(k_series, int_operator, int_expr), + Sequence( + Choice(k_expression, k_name, most_greedy=False), + str_operator, + string), + Sequence('(', THIS, ')'), + Sequence(THIS, k_and, THIS), + Sequence(THIS, k_or, THIS))) + + # where tag + where_tag = Sequence(k_where, Prio( + Sequence(k_name, str_operator, string), + Sequence(k_series, int_operator, int_expr), + Sequence('(', THIS, ')'), + Sequence(THIS, k_and, THIS), + Sequence(THIS, k_or, THIS))) + + # where pool + where_pool = Sequence(k_where, Prio( + Sequence(pool_props, int_operator, int_expr), + Sequence('(', THIS, ')'), + Sequence(THIS, k_and, THIS), + Sequence(THIS, k_or, THIS))) + + # where series + where_series = Sequence(k_where, Prio( + Sequence( + Choice(k_length, k_pool, most_greedy=False), + int_operator, + int_expr), + Sequence(k_name, str_operator, string), + Sequence( + Choice(k_start, k_end, k_shard_duration, most_greedy=False), + int_operator, + time_expr), + Sequence( + k_type, + bool_operator, + Choice(k_string, k_integer, k_float, most_greedy=False)), + Sequence('(', THIS, ')'), + Sequence(THIS, k_and, THIS), + Sequence(THIS, k_or, THIS))) + + # where server + where_server = Sequence(k_where, Prio( + Sequence(Choice( + k_active_handles, + k_active_tasks, + k_buffer_size, + k_fifo_files, + k_idle_percentage, + k_idle_time, + k_port, + k_pool, + k_startup_time, + k_max_open_files, + k_mem_usage, + k_open_files, + k_received_points, + k_selected_points, + k_uptime, + most_greedy=False), int_operator, int_expr), + Sequence(Choice( + k_address, + k_buffer_path, + k_dbpath, + k_ip_support, + k_libuv, + k_name, + k_uuid, + k_version, + k_status, + k_reindex_progress, + k_sync_progress, + most_greedy=False), str_operator, string), + Sequence(k_online, bool_operator, _boolean), + Sequence(k_log_level, int_operator, log_keywords), + Sequence('(', THIS, ')'), + Sequence(THIS, k_and, THIS), + Sequence(THIS, k_or, THIS))) + + # where shard + where_shard = Sequence(k_where, Prio( + Sequence( + Choice(k_sid, k_pool, k_size, most_greedy=False), + int_operator, + int_expr), + Sequence(Choice(k_server, k_status), str_operator, string), + Sequence( + Choice(k_start, k_end, most_greedy=False), + int_operator, + time_expr), + Sequence( + k_type, + bool_operator, + Choice(k_number, k_log, most_greedy=False)), + Sequence('(', THIS, ')'), + Sequence(THIS, k_and, THIS), + Sequence(THIS, k_or, THIS))) + + # where user + where_user = Sequence(k_where, Prio( + Sequence(k_name, str_operator, string), + Sequence(k_access, int_operator, access_keywords), + Sequence('(', THIS, ')'), + Sequence(THIS, k_and, THIS), + Sequence(THIS, k_or, THIS))) + + series_setopr = Choice( + k_union, + c_difference, + k_intersection, + k_symmetric_difference, + most_greedy=False) + + series_parentheses = Sequence('(', THIS, ')') + + series_all = Choice(Token('*'), k_all, most_greedy=False) + series_name = Repeat(string, 1, 1) + group_name = Repeat(r_grave_str, 1, 1) + tag_name = Repeat(r_grave_str, 1, 1) + series_re = Repeat(r_regex, 1, 1) + uuid = Choice(r_uuid_str, string, most_greedy=False) + group_tag_match = Repeat(r_grave_str, 1, 1) + series_match = Prio( + List(Choice( + series_all, + series_name, + group_tag_match, + series_re, + most_greedy=False), series_setopr, 1), + Choice( + series_all, + series_name, + group_tag_match, + series_re, + most_greedy=False), + series_parentheses, + Sequence(THIS, series_setopr, THIS), + ) + + limit_expr = Sequence(k_limit, int_expr) + + before_expr = Sequence(k_before, time_expr) + after_expr = Sequence(k_after, time_expr) + between_expr = Sequence(k_between, time_expr, k_and, time_expr) + head_expr = Sequence(k_head, int_expr) + tail_expr = Sequence(k_tail, int_expr) + access_expr = List(access_keywords, ',', 1) + + prefix_expr = Sequence(k_prefix, string) + suffix_expr = Sequence(k_suffix, string) + + f_all = Choice(Token('*'), k_all, most_greedy=False) + + f_points = Repeat(k_points, 1, 1) # DEPRECATED + + f_difference = Sequence( + k_difference, + '(', + Optional(time_expr), + ')') + f_derivative = Sequence( + k_derivative, + '(', + List(time_expr, ',', 0, 2), + ')') + f_mean = Sequence( + k_mean, + '(', Optional(time_expr), ')') + f_median = Sequence( + k_median, + '(', Optional(time_expr), ')') + f_median_low = Sequence( + k_median_low, + '(', Optional(time_expr), ')') + f_median_high = Sequence( + k_median_high, + '(', Optional(time_expr), ')') + f_sum = Sequence( + k_sum, + '(', Optional(time_expr), ')') + f_min = Sequence( + k_min, + '(', Optional(time_expr), ')') + f_max = Sequence( + k_max, + '(', Optional(time_expr), ')') + f_count = Sequence( + k_count, + '(', Optional(time_expr), ')') + f_variance = Sequence( + k_variance, + '(', Optional(time_expr), ')') + f_pvariance = Sequence( + k_pvariance, + '(', Optional(time_expr), ')') + f_stddev = Sequence( + k_stddev, + '(', Optional(time_expr), ')') + f_first = Sequence( + k_first, + '(', Optional(time_expr), ')') + f_last = Sequence( + k_last, + '(', Optional(time_expr), ')') + f_offset = Sequence( + k_offset, + '(', time_expr, ')') + f_timeval = Sequence( + k_timeval, + '(', ')') + f_interval = Sequence( + k_interval, + '(', ')') + + f_filter = Sequence( + k_filter, + '(', + Optional(str_operator), + Choice( + string, + r_integer, + r_float, + r_regex, + k_nan, + k_inf, + k_ninf, + most_greedy=True), + ')') + f_limit = Sequence( + k_limit, + '(', + int_expr, + ',', + Choice( + k_mean, + k_median, + k_median_high, + k_median_low, + k_sum, + k_min, + k_max, + k_count, + k_variance, + k_pvariance, + k_stddev, + k_first, + k_last, + most_greedy=False), + ')') + + aggregate_functions = List(Choice( + f_all, + f_offset, + f_limit, + f_mean, + f_sum, + f_median, + f_median_low, + f_median_high, + f_min, + f_max, + f_count, + f_variance, + f_pvariance, + f_stddev, + f_first, + f_last, + f_timeval, + f_interval, + f_difference, + f_derivative, + f_filter, + f_points, + most_greedy=False), '=>', 1) + + select_aggregate = Sequence( + aggregate_functions, + Optional(prefix_expr), + Optional(suffix_expr)) + + select_aggregates = List(select_aggregate, ',', 1) + + merge_as = Sequence( + k_merge, + k_as, + string, + Optional(Sequence(k_using, aggregate_functions))) + + set_address = Sequence(k_set, k_address, string) + set_tee = Sequence(k_set, k_tee, Choice( + k_false, + string, + most_greedy=False)) + set_backup_mode = Sequence(k_set, k_backup_mode, _boolean) + set_drop_threshold = Sequence(k_set, k_drop_threshold, r_float) + set_expression = Sequence(k_set, k_expression, r_regex) + set_ignore_threshold = Sequence(k_set, k_ignore_threshold, _boolean) + set_list_limit = Sequence(k_set, k_list_limit, r_uinteger) + set_log_level = Sequence(k_set, k_log_level, log_keywords) + set_name = Sequence(k_set, k_name, string) + set_password = Sequence(k_set, k_password, string) + set_port = Sequence(k_set, k_port, r_uinteger) + set_select_points_limit = Sequence( + k_set, k_select_points_limit, r_uinteger) + set_timezone = Sequence(k_set, k_timezone, string) + tag_series = Sequence(k_tag, tag_name) + untag_series = Sequence(k_untag, tag_name) + set_expiration_num = Sequence( + k_set, + k_expiration_num, + time_expr, + Optional(set_ignore_threshold)) + set_expiration_log = Sequence( + k_set, + k_expiration_log, + time_expr, + Optional(set_ignore_threshold)) + + alter_database = Sequence(k_database, Choice( + set_drop_threshold, + set_list_limit, + set_select_points_limit, + set_timezone, + set_expiration_num, + set_expiration_log, + set_tee, + most_greedy=False)) + + alter_group = Sequence(k_group, group_name, Choice( + set_expression, + set_name, + most_greedy=False)) + + alter_tag = Sequence(k_tag, tag_name, Choice( + set_name, + most_greedy=False)) + + alter_server = Sequence(k_server, uuid, Choice( + set_log_level, + set_backup_mode, + set_address, + set_port, + most_greedy=False)) + + alter_servers = Sequence(k_servers, Optional(where_server), Choice( + set_log_level, + most_greedy=False)) + + alter_user = Sequence(k_user, string, Choice( + set_password, + set_name, + most_greedy=False)) + + alter_series = Sequence( + k_series, + series_match, + Optional(where_series), + Choice(tag_series, untag_series, most_greedy=False)) + + count_groups = Sequence( + k_groups, Optional(where_group)) + count_tags = Sequence( + k_tags, Optional(where_tag)) + count_pools = Sequence( + k_pools, Optional(where_pool)) + count_series = Sequence( + k_series, Optional(series_match), Optional(where_series)) + count_servers = Sequence( + k_servers, Optional(where_server)) + count_servers_received = Sequence( + k_servers, + k_received_points, + Optional(where_server)) + count_servers_selected = Sequence( + k_servers, + k_selected_points, + Optional(where_server)) + count_shards = Sequence( + k_shards, Optional(where_shard)) + count_shards_size = Sequence( + k_shards, k_size, Optional(where_shard)) + count_users = Sequence( + k_users, Optional(where_user)) + count_series_length = Sequence( + k_series, + k_length, + Optional(series_match), + Optional(where_series)) + + create_group = Sequence( + k_group, group_name, k_for, r_regex) + create_user = Sequence( + k_user, string, set_password) + + drop_group = Sequence(k_group, group_name) + drop_tag = Sequence(k_tag, tag_name) + + # Drop statement needs at least a series_math or where STMT or both + drop_series = Sequence( + k_series, + Optional(series_match), + Optional(where_series), + Optional(set_ignore_threshold)) + drop_shards = Sequence( + k_shards, + Optional(where_shard), + Optional(set_ignore_threshold)) + drop_server = Sequence(k_server, uuid) + drop_user = Sequence(k_user, string) + + grant_user = Sequence( + k_user, string, Optional(set_password)) + + list_groups = Sequence( + k_groups, Optional(group_columns), Optional(where_group)) + list_tags = Sequence( + k_tags, Optional(tag_columns), Optional(where_tag)) + list_pools = Sequence( + k_pools, Optional(pool_columns), Optional(where_pool)) + list_series = Sequence( + k_series, + Optional(series_columns), + Optional(series_match), + Optional(where_series)) + list_servers = Sequence( + k_servers, Optional(server_columns), Optional(where_server)) + list_shards = Sequence( + k_shards, Optional(shard_columns), Optional(where_shard)) + list_users = Sequence( + k_users, Optional(user_columns), Optional(where_user)) + + revoke_user = Sequence(k_user, string) + + alter_stmt = Sequence(k_alter, Choice( + alter_series, + alter_user, + alter_group, + alter_tag, + alter_server, + alter_servers, + alter_database, + most_greedy=False)) + + calc_stmt = Repeat(time_expr, 1, 1) + + count_stmt = Sequence(k_count, Choice( + count_groups, + count_pools, + count_series, + count_servers, + count_servers_received, + count_servers_selected, + count_shards, + count_shards_size, + count_users, + count_tags, + count_series_length, + most_greedy=True)) + + create_stmt = Sequence(k_create, Choice( + create_group, + create_user)) + + drop_stmt = Sequence(k_drop, Choice( + drop_group, + drop_tag, + drop_series, + drop_shards, + drop_server, + drop_user, + most_greedy=False)) + + grant_stmt = Sequence(k_grant, access_expr, k_to, Choice( + grant_user, + most_greedy=False)) + + list_stmt = Sequence(k_list, Choice( + list_series, + list_tags, + list_users, + list_shards, + list_groups, + list_servers, + list_pools, + most_greedy=False + ), Optional(limit_expr)) + + revoke_stmt = Sequence(k_revoke, access_expr, k_from, Choice( + revoke_user, + most_greedy=False)) + + select_stmt = Sequence( + k_select, + select_aggregates, + k_from, + series_match, + Optional(where_series), + Optional(Choice( + after_expr, + between_expr, + before_expr, + tail_expr, + head_expr, + most_greedy=False)), + Optional(merge_as)) + + show_stmt = Sequence(k_show, List(Choice( + k_active_handles, + k_active_tasks, + k_buffer_path, + k_buffer_size, + k_dbname, + k_dbpath, + k_drop_threshold, + k_duration_log, + k_duration_num, + k_fifo_files, + k_expiration_log, + k_expiration_num, + k_idle_percentage, + k_idle_time, + k_ip_support, + k_libuv, + k_list_limit, + k_log_level, + k_max_open_files, + k_mem_usage, + k_open_files, + k_pool, + k_received_points, + k_reindex_progress, + k_selected_points, + k_select_points_limit, + k_server, + k_startup_time, + k_status, + k_sync_progress, + k_tee, + k_time_precision, + k_timezone, + k_uptime, + k_uuid, + k_version, + k_who_am_i, + most_greedy=False), ',', 0)) + + timeit_stmt = Repeat(k_timeit, 1, 1) + + help_stmt = Ref() + + START = Sequence( + Optional(timeit_stmt), + Optional(Choice( + select_stmt, + list_stmt, + count_stmt, + alter_stmt, + create_stmt, + drop_stmt, + grant_stmt, + revoke_stmt, + show_stmt, + calc_stmt, + help_stmt, + most_greedy=False)), + Optional(r_comment)) + + help_stmt = Sequence(k_help) # Dummy + + +def _set_attribute(cls, name, value): + setattr(cls, name, value) + if name not in cls._order: + cls._order.append(name) + if hasattr(value, 'name'): + raise SyntaxError('Element name is set to {0!r} and therefore cannot ' + 'be set to {1!r}. Use Repeat({0}, 1, 1) as a ' + 'workaround.'.format(value.name, name)) + value.name = name + + +def _walk(cls, path, structure): + name = '_'.join(path) + try: + if structure: + for child_path, child in structure.items(): + _walk(cls, child_path, child) + + opt = Optional(Choice(*[ + getattr(cls, '_'.join(p)) for p in structure.keys()])) + + value = Sequence(*[getattr( + cls, + 'k_' + path[-1], + Keyword(path[-1])), opt]) + else: + value = Keyword(path[-1]) + except AttributeError: + logging.critical('Cannot parse help file: {!r}'.format( + '{}.md'.format('_'.join(path)))) + import sys + sys.exit(1) + else: + if name != 'help': + _set_attribute(cls, name, value) + else: + # Replace the ref element + cls.help_stmt._element = value + + +def _build_help(cls): + '''Add 'help' statements to this class. + + Help files are MarkDown files which are read by the help module. + ''' + for path, structure in help_structure.items(): + _walk(cls, path, structure) + +_build_help(SiriGrammar) + +siri_grammar = SiriGrammar() diff --git a/grammar/siridbhelp.py b/grammar/siridbhelp.py new file mode 100644 index 00000000..6c0bafe7 --- /dev/null +++ b/grammar/siridbhelp.py @@ -0,0 +1,38 @@ +'''Help module. + +Build help structure for SiriDB grammar. + +:copyright: 2016, Jeroen van der Heijden (Cesbit) +''' + +import os +import re +import sys + +# +# Created with ls -A1 +# +help_files = [f[:-3] for f in os.listdir('../help') if f.endswith('.md')] +help_files.sort() + +def _build_structure(help_files): + '''Return a tree structure for the help files.''' + _structure = {} + + def _walk(d, keys, i): + i += 1 + k = tuple(keys[:i]) + if k not in d: + d[k] = {} + if i < len(keys): + _walk(d[k], keys, i) + for help_file in help_files: + _walk(_structure, help_file.split('_'), 0) + return _structure + + +help_structure = _build_structure(help_files) + + +if __name__ == '__main__': + print(help_structure) \ No newline at end of file diff --git a/help/help.md b/help/help.md new file mode 100644 index 00000000..8539b224 --- /dev/null +++ b/help/help.md @@ -0,0 +1,75 @@ +help +==== + +Displays this help page. + +Alias: ? + +Syntax: + + help [